このプロジェクトでは、モジュールローダーとしてRequireJSを使用しています。一部のモジュールはグローバルライブラリに影響を与えるため、それらが参照されているモジュール内で直接使用されることはありません。
例:
define(['definitely/goingto/usethis/','just/referencingthis/forpackaging'], function(useThis) {
useThis.likeIPromised();
// the following call can only be made when the second required file is available
someGlobalAvailableVariable.someMethod();
});
これは、JavaScriptでモジュールを作成するときに期待どおりに機能します。ただし、プロジェクトを段階的にTypeScriptに変換しています。上記の例を考えると、これは次のようになります。
import useThis = module("definitely/goingto/usethis/");
import whatever = module("just/referencingthis/forpackaging");
useThis.likeIPromised();
// I've written a definition file so the following statement will evaluate
someGlobalAvailableVariable.someMethod();
そして、これをJavaScriptにコンパイルするとき、コンパイラーは役立つことを望んでおり、未使用のインポートをすべて削除します。そのため、これは私のコードを壊し、2番目にインポートされたモジュールが利用できない原因になります。
私の現在の回避策は冗長な割り当てを含めることですが、これは見苦しいです:
import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module
コンパイル中にモジュールを最適化しないようにTypeScriptコンパイラを構成できるかどうか誰かが知っていますか?