どうやら、TypeScript では「export import xx = module("xx")」と言えるようです。
しかし、それはどういう意味ですか?スペックでは見えませんでした。
どうやら、TypeScript では「export import xx = module("xx")」と言えるようです。
しかし、それはどういう意味ですか?スペックでは見えませんでした。
良い観察。
これは、インポートされたモジュール全体を、囲んでいるモジュール内で作成された外部モジュールのように機能させる構成手法です。短縮された例を次に示します。
module MyModule {
export class MyClass {
doSomething() {
}
}
}
declare module EnclosingModule {
export import x = module(MyModule);
}
var y = new EnclosingModule.x.MyClass();
export キーワードは、単独でモジュールを外部モジュールにします。この場合、MyModule
元々は同封モジュールの内部で定義されていませんが、同封モジュールの外部モジュールを作成しています。
なんで?
I guess this is a handy way of re-using modules rather than repeating them in different contexts - making them accessible in more than one place where it seems logical to do so.
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 {
}
おそらくそれは意図されたものであり、単なるバグではありません。