Typescript 什么时候用命名空间,什么时候用模块

Recoding
  • 417

官方文档我看过,但是还是不理解

回复
阅读 5.6k
3 个回答

一个命名空间本身一个对象,它的作用是将一系列相关的全局变量组织到一个对象的属性:
比如:

let a = 1;
let b = 2;
let c = 3;
// ...
let z = 26;

组织成:

const Letter = {};
Letter.a = 1;
Letter.b = 2;
Letter.c = 3;
// ...
Letter.z = 26;

在这里,Letter就是一个命名空间。

你在手动构建一个命名空间,但是在ts中,namespace提供了一颗语法糖。上述可用语法糖改写成:

namespace Letter {
  export let a = 1;
  export let b = 2;
  export let c = 3;
  // ...
  export let z = 26;
}

编辑成js

var Letter;
(function (Letter) {
    Letter.a = 1;
    Letter.b = 2;
    Letter.c = 3;
    // ...
    Letter.z = 26;
})(Letter || (Letter = {}));

可以看到,一个命名空间可以关联一个或多个闭包,所以还可以做更多更多的事。

module已经不建议在自己代码中使用, 仅剩的用途是.d.ts。写自己代码可以全用namespace。

namespace是老概念的module,建议全部用namespace,方便统一,不混淆

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏