Node.JS的功能是否使得Typescript中的命名空间毫无意义?

时间:2017-03-12 22:13:48

标签: typescript

我一直在研究Typescript文档,我在模块和命名空间部分。我对Typescript 1.5中的内部和外部模块做了一些额外的研究,看看是否能够更清楚地区分两者之间的区别。

到目前为止,我对namespaces的理解是,除非明确导出和导入,否则它们是在模块内部定义的模块,这些模块对其他模块保持隐藏。虽然modules只是可以在任何地方使用的模块。我得到了关于ambient modules以及如何使用它们的部分,它确实让我想知道为什么这两个存在。

我一直在使用Node.JSAngular2,我注意到他们提到了AMD,System和Require JS,我还没有用过,所以我想知道这个区别是不是使用其中一个而不是Node时更重要。到目前为止,我可以看到NamespacesAmbient Modules都在Node中工作,尽管他们建议使用模块来防止混淆代码,但他们仍然继续讨论命名空间如何仍然有用,我只是可以不明白怎么做。我开始向后看旧版本,因为新版本似乎假设一个人已经熟悉这些东西并且只是让他们加快速度。有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:1)

如您所知,namespace现在只应用于声明代码的内部结构。

过去,它用于描述整个应用程序结构,就像JS中的“全局命名空间”和Java和C#等其他语言中的命名空间一样。

现在在TypeScript中使用namespace的一种方法是对接口和子类进行分组和定义:

export class Foo {
  constructor(public option: Foo.Options) { }
}

export namespace Foo {
  export interface Options {
    foo: string
  }
}