typescript 命名空间namespace

作用:代表内部模块,将项目模块化,减少全局变量,避免污染全局,提供逻辑分组和避免命名冲突

(1)使用
	namespace xx{
		内容...
		需要暴露的内容
			export ...
	}
	
	命名空间在js文件中会被转换成
		var xx;
		(function(){
		
			多个类会被分别放进自启动函数中
				var 类名=(function(){
					内容1...
				})
				var 类名=(function(){
					内容2...
				})
			
			其他内容会不变
			
			暴露的内容:
				xx.名称=变量名
				
		})(xx || xx={})
		
(1.5)设置命名空间别名
	import 别名 = 命名空间名称.暴露内容;
		别名即为暴露内容
	
(2)文件中使用其他.ts中的命名空间的内容
	1、使用引用标签,在顶部声明ts依赖文件路径
		希望全局使用命名空间:还需要走(4)、(5)
			///<reference path='/路径/x.ts' />		相对路径即可
			
		希望局部使用命名空间:
			export namespace x{};	其他模块import导入
		
	2、命名空间名称.暴露的变量名称
	
(3)修改tsconfig.json(可选)
	使得多个命名空间文件合并
	"module": "amd",  
	"outFile": "./x/xx.js",   将多个文件打包到一个文件内  

(4)当涉及到多文件时,我们必须确保所有编译后的代码都被加载了,使用编译成的js文件。
	方式一:
		tsc --outFile 输出文件名称 引用标签的入口文件路径即引用了所有命名空间的文件
			会根据源码里的引用标签自动地对输出进行排序
			
		也可以单独地指定每个命名空间文件
		tes  --outFile 输出文件名称 命名空间文件1 命名空间文件2
		
	方式二:每个源文件都会对应生成一个JavaScript文件,然后,在页面上通过 <script>标签把所有生成的JavaScript文件按正确的顺序引进来
		    <script src="Validation.js" type="text/javascript" />	命名空间文件
		    <script src="LettersOnlyValidator.js" type="text/javascript" />	命名空间文件,有对第一个文件的引用标签
		    <script src="ZipCodeValidator.js" type="text/javascript" />	命名空间文件,有对第一个文件的引用标签
		    <script src="Test.js" type="text/javascript" />	使用文件,有对所有命名空间文件的引用标签
		
(5).html文件引入合并后的js文件(单独编译后的js文件)以及使用了其中内容的文件
	通过命名空间的名称直接调用即可
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TypeScript 中的命名空间Namespace)是一种将代码组织为逻辑分组的方式,可用于避免全局命名冲突。命名空间可以包含变量、函数、类和其他命名空间等成员,从而使得代码更加模块化和可维护。 命名空间可以在代码中使用 `namespace` 关键字定义,并使用点号(`.`)来表示嵌套层级,例如: ```typescript namespace MyNamespace { export const myVar = "Hello"; export function myFunc() { console.log("World"); } export namespace InnerNamespace { export class MyClass {} } } ``` 在上述代码中,我们定义了一个名为 `MyNamespace` 的命名空间,它包含了一个变量 `myVar`、一个函数 `myFunc` 和一个内嵌命名空间 `InnerNamespace`,后者包含了一个类 `MyClass`。注意到我们使用了 `export` 关键字来将这些成员暴露给外部使用。 使用命名空间中的成员时,需要使用点号表达式(`.`)来访问嵌套层级中的成员,例如: ```typescript console.log(MyNamespace.myVar); // 输出: "Hello" MyNamespace.myFunc(); // 输出: "World" const myObj = new MyNamespace.InnerNamespace.MyClass(); ``` 在访问嵌套层级中的成员时,需要确保每个命名空间和每个命名空间中的成员都已经被正确地导出(使用 `export` 关键字),否则会导致编译错误。 在使用命名空间时,也可以使用 `import` 语句将其他模块中的命名空间导入到当前模块中,从而实现命名空间的重用和模块化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值