ES6模块:TypeScript内部模块和软件包的可持续性

Pal*_*leo 5 module typescript ecmascript-6

TypeScript中的类的全名

TypeScript 1.X允许开发人员使用内部模块作为命名空间.

module MyProject.MySubProject {
    export class A {
    }
    export function f() {
        var a1 = new A(); // valid
        var a2 = new MySubProject.A(); // valid too
        var a3 = new MyProject.MySubProject.A(); // valid too, again
    }
}
MyProject.MySubProject.f();
var a4 = new MyProject.MySubProject.A(); // ... and valid
Run Code Online (Sandbox Code Playgroud)

当transpiled到ES5,该代码创建对象MyProject,其中包含一个对象MySubProject,它包含两个功能Af.

从模块内部,可以使用相对名称(A,MySubProject.A)或全名(MyProject.MySubProject.A)设计类.从模块外部,导出的类与全名一起使用.

ES6中不再存在嵌套模块.TypeScript 将与ES6模块对齐.

classes(MyModule1.MyModule2.MyClass)的全名是否与ES6兼容?

如果我们想以旧方式使用命名空间,我们可以在闭包或对象中声明ES6类吗?

捆绑包和ES6模块

以下是ES6方式中的类似代码:

//------ MyProject/MySubProject.js ------
export class A {
}
export function f() {
    var a1 = new A(); // valid
}

//------ main.js ------
import { A, f } from 'MyProject/MySubProject';
f();
var a2 = new A();
Run Code Online (Sandbox Code Playgroud)

将两个JavaScript文件连接成一个缩小的文件后,如何操作import

bas*_*rat 2

TypeScript 只会与 ES6 模块保持一致,作为基于. 这是基于 GitHub 上正在进行的工作。当前的内部模块与新语法不冲突,因此将继续按原样工作。 TypeScript external modules