【发布时间】:2012-11-06 06:36:40
【问题描述】:
Apparently,你可以在 TypeScript 中说 'export import xx = module("xx")'。
但这意味着什么?我在规范中没有看到。
【问题讨论】:
-
这个问题涉及大约 4 年前从 TypeScript 中删除的语法。
标签: typescript obsolete
Apparently,你可以在 TypeScript 中说 'export import xx = module("xx")'。
但这意味着什么?我在规范中没有看到。
【问题讨论】:
标签: typescript obsolete
从 0.8.1.1 开始,当您导出扩展在其他模块中声明的类的类时,您显然需要使用此语法。
例如,在 0.8.1 中,您可以这样说:
import mUiBase = module("../UiBase");
export class BaseViewModel extends mUiBase.UiBase {
}
但在 0.8.1.1 中,这会给您一个错误“Exported class extends class from private module”,所以您需要这样做:
export import mUiBase = module("../UiBase");
export class BaseViewModel extends mUiBase.UiBase {
}
这大概是故意的,而不仅仅是一个错误。
【讨论】:
良好的观察力。
这是一种组合技术,它使整个导入的模块就像在封闭模块中创建的外部模块一样。这是一个简短的示例:
module MyModule {
export class MyClass {
doSomething() {
}
}
}
declare module EnclosingModule {
export import x = module(MyModule);
}
var y = new EnclosingModule.x.MyClass();
export 关键字本身使模块成为外部模块。在这种情况下,它使MyModule 成为封闭模块的外部模块,即使它最初并未在封闭模块内部定义。
为什么?
我想这是一种重用模块的便捷方式,而不是在不同的上下文中重复它们——使它们在多个地方都可以访问,这样做似乎是合乎逻辑的。
【讨论】:
declare module SomeModule { export import stuff = module("stuff"); }
import x = module 也变成了 import x = require。 (module(MyModule) 曾经有效吗?现在不重要了……)