在typescript中名称空间和模块之间有什么区别

时间:2016-05-09 15:07:32

标签: module typescript namespaces

我已经使用了几个月的 typescript ,但我还没有理解命名空间和模块的区别。

我知道在将它们命名为内部外部模块之前,但我可以从其他文件中导入类。那么真正的区别是什么?

2 个答案:

答案 0 :(得分:4)

正如TS-handbook中所述 有两种模块:"内部" &安培; "外部&#34 ;.内部模块中的代码用Typescript和" external"编写。是用Javascript编写的。

为了与新的ECMAScript 2015术语保持一致,他们决定将其重命名如下:

  1. "内部模块"现在是"命名空间"。
  2. "外部模块"现在只是"模块",以便与ECMAScript对齐
  3. 所以:

    • 您编写代码的方式不同
    • 使用模块时,在使用名称空间时,类不会在全局范围中公开:

    示例:

    假设您有公共命名空间序列NamespaceA.NamespaceB.NamespaceC,它公开了公共类ClassD。 您可以通过这种方式全局访问所有这些:

    window.NamespaceA
    window.NamespaceA.NamespaceB
    window.NamespaceA.NamespaceB.NamespaceC
    window.NamespaceA.NamespaceB.NamespaceC.ClassD
    

    不说window.NamespaceA = NamespaceA

    如果您使用模块,则必须使用" magic"上述

答案 1 :(得分:3)

当您不希望输出的Javascript代码使用模块加载器时,命名空间是TypeScript的结构化代码方式。

您可以在手册here中找到有关命名空间与模块的更多信息。