TypeScript是否支持命名空间?

在标题中:TypeScript是否支持名称空间? 如果是这样,我该如何使用它们?

Typescript允许定义与ECMAScript 6中的内容紧密相关的模块 。下面的示例来自规范:

module outer { var local = 1; export var a = local; export module inner { export var x = 10; } } 

正如你所看到的,模块有名字,可以嵌套。 如果您在模块名称中使用点,typescript会将其编译为嵌套模块,如下所示:

 module ABC { export var x = 1; } 

这相当于

 module A { module B { module C { export var x = 1; } } } 

同样重要的是,如果在一个打字程序中重复使用完全相同的模块名称,代码将属于同一个模块。 因此,您可以使用嵌套模块来实现层次结构命名空间。

从版本1.5开始,Typescript支持namespace关键字。 命名空间相当于内部模块。

从Typescript中的新增function :

之前:

 module Math { export function add(x, y) { ... } } 

后:

 namespace Math { export function add(x, y) { ... } } 

为了定义一个内部模块,现在你可以使用modulenamespace

这是一个TypeScript命名空间的例子:

 ///<reference path='AnotherNamespace/ClassOne.ts'/> ///<reference path='AnotherNamespace/ClassTwo.ts'/> module MyNamespace { import ClassOne = AnotherNamespace.ClassOne; import ClassTwo = AnotherNamespace.ClassTwo; export class Main { private _classOne:ClassOne; private _classTwo:ClassTwo; constructor() { this._classOne = new ClassOne(); this._classTwo = new ClassTwo(); } } } 

你可以在这里查看更多: http : //www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

没有'namespace'关键字,但是内部模块(使用'module'关键字)和外部模块(使用'export'关键字)提供了一种类似的方式将代码分成逻辑层次结构。

假…

 module ABC { export var x = 1; } 

等于

 module A { export module B { export module C { export var x = 1; } } } 

因为你可以写在模块A之外:

 var y = ABCx; 

但是:

 module A { module B { module C { export var x = 1; } var y = Cx; // OK } //var y = BCx; // Invalid } //var y = ABCx; // Invalid