8

显然,你可以在 TypeScript 中说 'export import xx = module("xx")'。

但是,这是什么意思?我在规范中没有看到。

4

2 回答 2

9

良好的观察力。

这是一种组合技术,它使整个导入的模块就像在封闭模块中创建的外部模块一样。这是一个简短的示例:

module MyModule {
    export class MyClass {
        doSomething() {

        }
    }
}

declare module EnclosingModule {
    export import x = module(MyModule);
}

var y = new EnclosingModule.x.MyClass();

export 关键字本身使模块成为外部模块。在这种情况下,它正在制作MyModule封闭模块的外部模块,即使它最初不是在封闭模块内部定义的。

为什么?

我想这是一种重用模块的便捷方式,而不是在不同的上下文中重复它们 - 使它们可以在多个看起来合乎逻辑的地方访问。

于 2012-11-17T22:46:30.180 回答
4

从 0.8.1.1 开始,当您导出扩展在其他模块中声明的类的类时,您显然需要使用此语法。

例如,在 0.8.1 中,您可以这样说:

import mUiBase = module("../UiBase");

export class BaseViewModel extends mUiBase.UiBase {
}

但是在 0.8.1.1 中,这会给您一个错误“导出的类从私有模块扩展类”,因此您需要这样做:

export import mUiBase = module("../UiBase");

export class BaseViewModel extends mUiBase.UiBase {
}

大概这是故意的,而不仅仅是一个错误。

于 2012-12-07T21:53:29.317 回答