Apparently,你可以在TypeScript中說'export import xx = module(「xx」)'。TypeScript - 什麼是'導入導入'?
但這是什麼意思?我沒有在規範中看到。
Apparently,你可以在TypeScript中說'export import xx = module(「xx」)'。TypeScript - 什麼是'導入導入'?
但這是什麼意思?我沒有在規範中看到。
良好的觀察。
這是一種組合技術,可以使整個導入模塊像在封閉模塊中創建的外部模塊一樣工作。這裏是一個簡短的例子:
module MyModule {
export class MyClass {
doSomething() {
}
}
}
declare module EnclosingModule {
export import x = module(MyModule);
}
var y = new EnclosingModule.x.MyClass();
export關鍵字本身使模塊成爲一個外部模塊。在這種情況下,即使它最初並未在封閉模塊內部定義,也會使封閉模塊的外部模塊成爲MyModule
。
爲什麼?
我想這是一種重用模塊的方便方式,而不是在不同的環境下重複使用它們 - 使它們可以在多個地方進行訪問,這似乎符合邏輯。
從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 {
}
大概是這個意思,而不僅僅是一個錯誤。
我對CodePlex的討論(目前無法找到鏈接)的理解是,這是一個錯誤,導出導入是臨時解決方法。 – JcFx
我正在使用0.8.1.1 ...剛剛升級到0.8.3,所有我的「導出導入」現在是錯誤(可以簡單地刪除導出)。所以JcFx是正確的,它是一個錯誤。奇怪的是,史蒂夫描述了一個真正的用途,現在呢? – parliament
這個問題與大約4年前從TypeScript中刪除的語法有關。 –