私は本当に素晴らしいと感じたTypeScriptで遊んでいます。しかし、*.d.ts
と*.ts
の違いについて混乱しています。それらの違いは何ですか?誰かが適切な例で私を説明できますか?
TypeScript定義ファイル(*.d.ts
)
これらのファイルは、TypeScriptで使用するJavaScriptファイルの「形状」を記述するために使用されます。
たとえば、次のJavaScript(Example.js)があるとします。
function displayMessage(message) {
alert(message);
}
このファイルだけでは、TypeScriptコードにはこの関数が存在するという手がかりがありません。名前もパラメーターもわかりません。これを修正するには、定義ファイル(Example.d.ts)に記述します:
declare function displayMessage(message: string);
TypeScriptで関数displayMessage
をコンパイルエラーなしで使用できるようになり、誤って使用するとコンパイルエラーが発生します(たとえば、2
Iではなく1
引数を指定した場合エラーが発生します)。
要するに:定義ファイルを使用すると、TypeScriptのコードを書き直すことなく、TypeScriptの既存のJavaScriptコードを使用できます。
TypeScriptファイル(.ts
)
これは、TypeScriptを記述するときに使用する標準のファイル拡張子です。 JavaScriptにコンパイルされます。
* .d.tsファイルで許可されるものは、*。tsファイルにも表示されますが、その逆は表示されません。したがって、*。d.tsでは、TypeScriptの機能のサブセットを使用できます。
* .d.tsファイルには、出力にJavaScriptコードを生成しないTypeScriptコードのみを含めることができます。 JavaScriptを生成するTypeScriptの機能を使用しようとすると、エラーが発生します。
インターフェイスはコンパイル後に完全に消えるため、許可されます。
出力JavaScriptでオブジェクトを生成する通常の列挙型とは異なり、Const列挙型(1.4で追加)も使用できます。
トップレベルのクラス、変数、モジュール、および関数には、declare
をプレフィックスとして付ける必要があります。多くの場合、最上位のdeclare module
およびその中のものも純粋な宣言です。
declare module Something {
var x;
}
これらは、TypeScriptインターフェースをJavaScriptで記述されたコードに公開するだけでなく、もっと便利です。また、これらを使用して、コードで広く使用されている一連の共通インターフェースを宣言することもできます。そのため、特定の物理モジュールをrequire
する必要はありません。