Apparently,你可以在TypeScript中说'export import xx = module(“xx”)'。
但这意味着什么?我没有在规范中看到这一点。
答案 0 :(得分:9)
很好的观察。
这是一种组合技术,它使整个导入的模块就像在封闭模块中创建的外部模块一样。这是一个缩短的例子:
module MyModule {
export class MyClass {
doSomething() {
}
}
}
declare module EnclosingModule {
export import x = module(MyModule);
}
var y = new EnclosingModule.x.MyClass();
export关键字本身使模块成为外部模块。在这种情况下,它正在使MyModule
成为封闭模块的外部模块,即使它最初未在封闭模块内部定义。
为什么?
我想这是重用模块的一种方便方式,而不是在不同的上下文中重复它们 - 使它们可以在不止一个地方访问,而这似乎是合乎逻辑的。
答案 1 :(得分:4)
从0.8.1.1开始,当您导出扩展在其他模块中声明的类的类时,您显然需要使用此语法。
例如,在0.8.1中,您可以这样说:
import mUiBase = module("../UiBase");
export class BaseViewModel extends mUiBase.UiBase {
}
但是在0.8.1.1中,这会给你一个错误“Exported class extends private from private module”,所以你需要这样做:
export import mUiBase = module("../UiBase");
export class BaseViewModel extends mUiBase.UiBase {
}
据推测,这是有意的,而不只是一个错误。