本节介绍命名空间相关内容,包括命名空间的作用、实现方式、注意事项、命名空间和模块的区别等内容。
由于全局作用域下,有可能会导致命名冲突,使用命名空间之后就可以通过命名空间组织代码,将代码封装到不同的命名空间当中,这样就不会出现命名冲突的问题。
上述实例若要继续扩展str时就需要对代码进行组织,以便于在记录他们的类型同时还不用担心与其它对象产生命名冲突,可以把定义包裹到一个命名空间中,使用命名空间中,可以定义哪些接口是外部可以访问的,需要使用export进行导出,内部的变量是实现的具体细节,不需要导出,因此在命名空间外部是不能访问的,由于是在命名空间之外访问,因此需要限定类型的名,如A.str,示例如下:
命名空间可以被分割到多个文件中,这样如果代码量比较大的情况下,就可以根据功能进行文件划分,提高代码的可维护性。
命名空间在不同的文件中,仍然是同一个命名空间,使用时和在同一个文件中定义的命名空间一样,因为不同的文件之间存在依赖关系,所以需要使用引用标签告诉编译器文件之间的关联,如下:
A.ts
B.ts
C.ts
test.ts
当设计多个文件时,必须确保所有编译后的代码都被加载了,有两种方式可以实现:
1. 把所有的文件编译为一个输出文件,需要使用--outFile标记:
编译器会根据源码中的引用标签自动地对输出进行排序,也可以单独的指定每个文件。
2. 可以编译每一个文件,每个源文件都会生成一个js文件,在html上通过
发表评论