namespace命名空间
namespace
工作中经常无法避免全局变量造成的污染,于是TypeScript提供了namespace关键字,避免这个问题的出现
- 作用:内部模块,主要用于组织代码,避免命名冲突。
- 表现:
- 命名空间内的类默认私有
- 语法:
- 通过export暴露
- 通过namespace关键字定义
TS模块
TS与ES2015一样,任何包含顶级import或者export的文件都被当成一个模块
相反,如果一个文件不带顶级的import或者export声明,那么它的内容就是全局可见的
TS命名空间
更推荐使用ES模块作为模块化的解决方案,而不是过度使用命名空间
使用
命名空间中要通过export将想要暴露的部分导出,不导出就不能被读取
namespace会被编译成这样
1 | ; |
嵌套命名空间
namespace可以嵌套
1 | namespace a { |
抽离命名空间
可以导出/导入命名空间
a.ts:
1 | export namespace V { |
b.ts:
1 | import {V} from '../observer/index' |
简化命名空间
1 | namespace A { |
合并命名空间
声明同名的命名空间,不会出现代替,而是会出现合并现象
评论