33.【TypeScript 教程】命名空间

简介: 33.【TypeScript 教程】命名空间

TypeScript 命名空间

命名空间同样是为了避免变量命名冲突,TypeScript 官方将命名空间视为“内部模块”,上节介绍的模块被视为“外部模块”。

如果声明相同名称的命名空间,TypeScript 编译器会将其合并为一个声明,具体的合并规则会在下节介绍。

1. 解释

使用 namespace 关键字来声明命名空间。

TypeScript 的命名空间可以将代码包裹起来,只对外暴露这个命名空间对象,通过 export 关键字将命名空间内的变量挂载到命名空间对象上。

2. 命名空间的本质

命名空间本质上就是一个对象,将其内部的变量组织到这个对象的属性上:

namespace Calculate {
  const fn = (x: number, y: number) => x * y 
  export const add = (x: number, y:number) => x + y
}

来看其编译后的结果:

"use strict";
var Calculate;
(function (Calculate) {
    var fn = function (x, y) { return x * y; };
    Calculate.add = function (x, y) { return x + y; };
})(Calculate || (Calculate = {}));

那么,我们就可以访问 Calculate 对象上的 add 属性了:

Calculate.add(2, 3)

命名空间主要是为解决全局作用域内重名问题,而这一问题随着模块化编程的使用,已经得到了解决。

3. 小结

通过本节的介绍,知道命名空间的使用方法即可,在 TypeScript 中一般不推荐使用。

相关文章
|
19天前
|
JavaScript Java API
30.【TypeScript 教程】Reflect Metadata
30.【TypeScript 教程】Reflect Metadata
13 4
|
19天前
|
JavaScript 编译器
31.【TypeScript 教程】混入(Mixins)
31.【TypeScript 教程】混入(Mixins)
17 3
|
19天前
|
JavaScript
28.【TypeScript 教程】生成器(Generator)
28.【TypeScript 教程】生成器(Generator)
23 3
|
19天前
|
JavaScript 前端开发
27.【TypeScript 教程】迭代器(Iterator)
27.【TypeScript 教程】迭代器(Iterator)
20 3
|
19天前
|
JavaScript 编译器
35.【TypeScript 教程】编译选项
35.【TypeScript 教程】编译选项
13 2
|
19天前
|
JavaScript 存储
25.【TypeScript 教程】infer 关键字
25.【TypeScript 教程】infer 关键字
17 2
|
19天前
|
JavaScript
23.【TypeScript 教程】条件类型
23.【TypeScript 教程】条件类型
10 2
|
19天前
|
JavaScript 开发者
22.【TypeScript 教程】映射类型
22.【TypeScript 教程】映射类型
14 2
|
19天前
|
索引 JavaScript 前端开发
21.【TypeScript 教程】索引类型
21.【TypeScript 教程】索引类型
16 2
|
19天前
|
JavaScript
19.【TypeScript 教程】联合类型
19.【TypeScript 教程】联合类型
10 2