依存関係は、最上位のディレクティブを使用server.ts
して表面積をエクスポートするモジュールである必要があり、ディレクティブを使用してそれらをロードする必要があります。ここでの根本的な原因は、TypeScriptにはコンパイル用の2つの異なる種類のユニバースがあることです。export
server.ts
import
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
これを実行しようとすると、単にエラーが発生します。