ES6 模块:TypeScript 内部模块和包的可持续性
ES6 Modules: Sustainability of TypeScript internal modules & Bundles
classTypeScript 中的全名
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
,该对象 MySubProject
包含两个函数 A
和 f
。
在模块内部,class可以设计成相对名称(A
、MySubProject.A
)或全名(MyProject.MySubProject.A
)。从模块外部,导出的 class 与全名一起使用。
但是nested modules no longer exists in ES6. And TypeScript is going to align to the ES6 modules.
classes (MyModule1.MyModule2.MyClass
) 的全名是否与 ES6 兼容?
如果我们想以旧方式使用命名空间,我们可以在闭包或对象中声明 ES6 class 吗?
捆绑包和 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
?
TypeScript 仅作为 new sytanx based on TypeScript external modules
与 ES6 模块保持一致。这是基于 GitHub 上正在进行的工作。当前 internal 模块与新语法不冲突,因此将继续按原样工作。
classTypeScript 中的全名
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
,该对象 MySubProject
包含两个函数 A
和 f
。
在模块内部,class可以设计成相对名称(A
、MySubProject.A
)或全名(MyProject.MySubProject.A
)。从模块外部,导出的 class 与全名一起使用。
但是nested modules no longer exists in ES6. And TypeScript is going to align to the ES6 modules.
classes (MyModule1.MyModule2.MyClass
) 的全名是否与 ES6 兼容?
如果我们想以旧方式使用命名空间,我们可以在闭包或对象中声明 ES6 class 吗?
捆绑包和 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
?
TypeScript 仅作为 new sytanx based on TypeScript external modules
与 ES6 模块保持一致。这是基于 GitHub 上正在进行的工作。当前 internal 模块与新语法不冲突,因此将继续按原样工作。