2016-08-30 15 views
1

既存のコードをモジュールアプローチでtypescriptに変換していますが、typescriptで対処する方法がわかりません。あなたはfeatureNamespaceの機能を別々のファイルにあったとrequirejs経由で読み込まれているとインクルードは、グローバル名前空間オブジェクトに添付された以前は、このTypescriptモジュールがアイテムが名前空間に追加されているかどうかを確認します

featureNamespace = { 
    feature1: ..., 
    feature2: ..., 
    feature3: ... 
}; 

function getFeature(feature: string) { 
    if (featureNamespace[feature]) { 
     return featureNamespace[feature]; 
    } 

    throw `Feature '${feature}' has not been loaded`; 
} 

を持っていると言います。

モジュラーアプローチでは、私が使用できるグローバル名前空間オブジェクトはありません。私はfeatureNamespace上に一つのファイルに、例えば、

export module featureNamespace { 
    export let feature1 = ... 
} 

を持っており、

export module featureNamespace { 
    export let feature2 = ... 
} 

を別のファイルにしてから、何とか、モジュールfeatureNamespaceをインポートし、機能が追加されているチェックするためにそれを使用することはできません?または私はできますか?

+0

オンデマンドでtypescriptで機能をロードする場合、typescriptはモジュールローダーの実装を提供しないため、ローダーを用意する必要があります。 requirejsが実行する場合は、https://www.typescriptlang.org/docs/handbook/modules.htmlの「オプションのモジュール読み込みとその他の高度な読み込みシナリオ」のrequirejsの例もあります。 – artem

答えて

0

することができます!私が何をするかは、小さなファイルにさまざまな機能を入れてから、それらを再エクスポートする1​​つの集約ファイルを持っています。私はこれもあなたのユースケースでうまくいくと思いますか?

ファイル1:

export let feature1 = ... 

ファイル2:

export let feature2 = ... 

ファイル3:

export namespace featureNamespace { 
    export { feature1 } from "./file1"; 
    export { feature2 } from "./file2"; 
} 

は、あなたがより多くの質問がある場合は、私に教えてください、私は私の答えを拡張します。

+0

これは可能ですか?私は "エクスポート宣言は名前空間に許可されていません"エラーを取得しています。 – Umair

+0

私は自分のコードでこの正確な方法を使用しています。奇妙な。ネームスペース内のインポートをエクスポートできない可能性がありますか?私はあなたに戻ってきます。どのモジュールローダーを使用していますか? –

+0

私はrequirejsを使用しています – Umair

関連する問題