2016-04-13 1 views
3

既存のJSライブラリを使用するTypeScriptコードを記述しようとしています。問題は、このライブラリはinclude()に渡された「パス」に基づいて、実行時にロードするJSクラスの施設、include()を提供することである:TypeScriptの行を無視するが、それをJSにコピーするには?

するvar LibraryClassの=は(「パスとクラス」)が含ま;

しかし、活字体は、コンパイル時にこれらのクラスの定義を必要とする...私は/// <reference path="someFile.ts"/>を経て、.TSに(一緒にvar LibraryClass付き)全体include行をコメントし、クラス定義に通常の活字体の方法を提供することで、自分のコードのコンパイルを行うことができますまたはこのライブラリ用の.d.ts環境定義ファイルを作成してください。

しかし、私は... .TSにinclude()呼び出しを無視するが、結果の.jsでそれらを維持する方法を見つけ出すことはできません

はそれが.TSと.jsファイル内の別の変数名を持つことが可能だことができますか?例えば、私ができる場合、

var LibraryClassTS = include( 'path-to-class');

活字体で

しかし、どういうわけか、

するvar LibraryClassの=にコンパイル( 'パス・ツー・クラス')を含みます。

JavaScriptがあれば、それは私の問題を解決するだろう:私は(LibraryClassインタフェース定義が.d.tsからロードされている間).TSに空LibraryClassTSクラスを持っているとの.jsで、実行時LibraryClass読み込みます。

答えて

3

これはあなたがincludeを使用している唯一の場所である場合は、そのファイルの先頭でこれを置く:

declare var include: any; 

あなたのアプリケーション全体でそれ以上を使用している場合は、.d.tsファイルに移動することを検討

しかし、複数のプロジェクトでそれを使用している場合は、より完全な仕様を作成して、間違いなく入力されたレポに提出することを検討する必要があります。ここで

+0

が、とクラス 'LibraryClass'を作成します。私は別の.d.tsから来る 'LibraryClass'の定義を持っていますが、' var LibraryClass = ... 'は別のローカル定義を作成します... – Boris

0

は、私が.TSでinclude()ラインを抑えるが、.jsファイルでそれを可能にするためにやったことだ:(、

1)活字体のコードでは活字体はコメントとして扱われるように、////で各include()行をコメントし、この「コメント」を.jsにコピーしました)。

2)/^(\s*\/{4}).+=\s*\binclude\b\s*\(.*\)/の正規表現に一致する行の.jsファイル(.tsに対応する)を検索し、////を削除するポストプロセッサスクリプトを作成しました。

3)このスクリプトをIntelliJ/WebStormのFile Watchersプラグインにフックして、各TypeScriptのビルド後に自動的に起動されるようにします。

-1

これは助けることができますチェックアウトしてください:/// TS_IGNORE てみましょう。問題は、私はすでに.d.tsで定義されたinclude`、 `でない文字列= 1 :)

+0

こんにちは、あなたの答えに、答えは、SOに最も適していません。 – Chaithanya

関連する問題