TypeScript - 什么是'导出导入'?

时间:2012-11-17 21:57:17

标签: typescript obsolete

Apparently,你可以在TypeScript中说'export import xx = module(“xx”)'。

但这意味着什么?我没有在规范中看到这一点。

2 个答案:

答案 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 {
}

据推测,这是有意的,而不只是一个错误。