依存関係は、最上位のディレクティブを使用server.tsして表面積をエクスポートするモジュールである必要があり、ディレクティブを使用してそれらをロードする必要があります。ここでの根本的な原因は、TypeScriptにはコンパイル用の2つの異なる種類のユニバースがあることです。exportserver.tsimport
1つ目は、通常のWebページで使用するデフォルトのファイルで、単純なローダーが1つ以上のソースファイルを一定の順序で取得してその順序で実行し、依存関係の順序を自分で決定します。これは「プログラム」コンパイルと呼ばれます。プログラムのコンパイルでは、サイドバイサイドコンパイル(a.ts => a.js、b.ts => b.js)を実行するか、--out((a.ts + b.ts)を使用して連結コンパイルを実行します。 => out.js)。
プログラムのコンパイルでは、///<reference>タグを使用して参照を参照します。これらの参照がソースファイル(.ts)を参照している場合、を使用している場合は出力に連結され、そうでない場合--outはサイドバイサイド.jsファイルとして出力されます。これらの参照が宣言ファイル(.d.ts)に対するものである場合、基本的には、外部ローダー(つまり<script>、ブラウザーのタグ)を介してロードされたファイルの定義を取得することを意味します。
2つ目は、実行時の依存関係を解決して非同期またはべき等のモジュール読み込みを行うnode.jsまたはその他の環境で使用する種類のコンパイルです。これは「モジュール」コンパイルと呼ばれます。ここでは、--module渡すフラグがtsc重要であり、モジュールとして単一のファイルをロードすることは(一般的に)node.jsなどのモジュールローダーがどのように機能するかであるため、実行する唯一の有効なことはサイドバイサイドコンパイルです。
モジュールのコンパイルでは、最上位オブジェクト(関数、クラス、モジュール、インターフェイス、または変数)でキーワードを使用して、を使用してexport参照するコードで使用できるものを制御しますimport。モジュールベースのランタイムローダーには、ネイキッドJSファイルをロードするという概念がないため、宣言ファイル/// <reference>を指すタグのみを使用する必要があります。.d.tsでコンパイルすることはできません--out。
単に機能しないため、これらのコンパイルモードを組み合わせて使用することは絶対に避けてください。実際、0.8.2.0では、tscこれを実行しようとすると、単にエラーが発生します。