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元々は同封モジュールの内部で定義されていませんが、同封モジュールの外部モジュールを作成しています。

なんで?

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.

于 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 に答える