ES6模块:TypeScript内部模块的可持续性&捆绑

时间:2015-02-25 12:06:46

标签: 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

当转换为ES5时,此代码会创建一个对象MyProject,其中包含一个对象MySubProject,其中包含两个函数Af

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

但是nested modules no longer exists in ES6。和TypeScript is going to align to the ES6 modules

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

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

Bundles和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();

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

1 个答案:

答案 0 :(得分:2)

TypeScript仅作为基于 TypeScript external modules sytanx 与ES6模块对齐。这是基于GitHub正在进行的工作。当前内部模块与新语法不冲突,因此将继续按原样工作。