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
,其中包含两个函数A
和f
。
从模块内部,可以使用相对名称(A
,MySubProject.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类吗?
以下是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
?
答案 0 :(得分:2)
TypeScript仅作为基于 TypeScript external modules
的新 sytanx 与ES6模块对齐。这是基于GitHub正在进行的工作。当前内部模块与新语法不冲突,因此将继续按原样工作。