37

このプロジェクトでは、モジュールローダーとして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コンパイラを構成できるかどうか誰かが知っていますか?

4

2 に答える 2

26

ファイルの先頭でこれを行うことができます (の代わりにimport):

/// <amd-dependency path="just/referencingthis/forpackaging" />
于 2013-03-07T17:05:40.890 に答える
9

より良い解決策 (TS 1.8 でテスト済み):

import 'just/referencingthis/forpackaging';

amd-dependency triple-slash-directive は、他に必要なインポートがある場合にのみ機能するようです。amd-dependency ディレクティブのみを使用すると、TypeScript コンパイラはモジュール定義なしで JavaScript を完全に生成します。

于 2016-04-27T16:14:57.233 に答える