2016-05-03 11 views

答えて

1

トリックは純粋にJavaScriptの表記を使用することですそれを検証しようとするか、型定義を追加して、モジュールシステムを使用して正しく検証するようにしてください。あなたは型定義をスタブすることができるので、これは非常に手間がかかりません。

直接ノード(CommonJS)の輸入を使用して:直接RequireJSを使用して

// Note there's no 'import' statement here. 
var loadedModule: any = require('module-name'); 

// Now use your module however you'd like. 

を:

define(["module-name"], function (loadedModule: any) { 
    // Use loadedModule however you'd like 
}); 

は、これらのいずれかの場合、これは通常、実際の使用と変なふうに混ぜることがあるので注意してくださいTypeScriptモジュールは同じファイルにインポートされます(特にRequireJS側では2層のモジュール定義で終わる可能性があります.TypeScriptは同じくあなたが管理しているモジュールを管理しようとします)。手での老化)。私はこのアプローチを使うか、実際の型定義を使うかのどちらかをお勧めします。

スタブ型定義:適切な型定義を取得

は最高となり、それらが入手可能であるか、またはあなたは、あなたは間違いなくすべきであるべき自分で書く時間を持っている場合。

しかし、あなたは自分のモジュール全体にanyタイプを与え、実際にそれを入力することなく、モジュールシステムにあなたのモジュールを置くことができない場合は、次の

declare module 'module-name' { 
    export = <any> {}; 
} 

これは、あなたがmodule-nameをインポートして持つことができるようにすべきですTypeScriptは、あなたが話していることを知っています。それでも、モジュール名のインポートでは、使用しているモジュールシステムによってランタイムに正常にロードされることを確認する必要があります。そうしないと、コンパイルされますが、実際には実行されません。

7

あなたのオプションは、活字体のモジュールシステムの外にそれをインポートするには、どちらかであるそれはdoesnのように(直接手でRequireJSまたはノードなどのモジュールのAPIを呼び出すことによって):

+0

このファイルをどこに置くべきか(スタブ型定義の場合)、およびファイル名を教えてください。私は "モジュールシステム"が何であるか分かりませんが、typescriptはノードモジュールについて知らないので、どこにいるか教えてください。 –

+0

「import-Provider」のようなインポートを満たすスタブを 'react-redux''から作成するにはどうすればよいですか? – jbandi

1

私はティム・ペリーの答えに「型定義をスタブ」アプローチを使用したとき、私はエラーを得た:error TS2497: Module ''module-name'' resolves to a non-module entity and cannot be imported using this construct.

ソリューションはわずかスタブ.d.tsファイルを手直ししました:

declare module 'module-name' { 
    const x: any; 
    export = x; 
} 

そして、あなたができますインポートする:

独自のスタブファイルを作成すると、必要に応じて実際の宣言を書き込む障壁が低くなります。 。

関連する問題