私はいくつかのタイプコピーファイルは.d.ts
と他のものは単一の.ts
エクステンションを持っています。TypeScript:* .tsと* d.ts拡張子
彼らは何を表していますか? 違いは何ですか?
私はいくつかのタイプコピーファイルは.d.ts
と他のものは単一の.ts
エクステンションを持っています。TypeScript:* .tsと* d.ts拡張子
彼らは何を表していますか? 違いは何ですか?
これらはdeclaration filesであるか、ウェブでdefinition files
と呼ばれることもあります。
これらのファイルが必要な理由を示す例を使用して回答します。
f
機能を持つlib.js
ライブラリがあるとします。
"use strict";
function f() {
}
exports.f = f;
このライブラリは、他のjs
ファイルで正常に機能します。例えば。
var f = require('./lib').f;
f();
しかし、あなたは活字体で開発している、とあなたindex.ts
次の書き込みであなたは、この機能を使用する必要があります:main.js
から使用して
import {f} from './lib';
しかしtypescriptですコンパイラはあなたを与えるだろうエラー:typescriptですがjs
ファイルを読み取ることができないため
Error:(1, 17) TS2307:Cannot find module './lib'.
です。だから、あなたのモジュールと関数についてタイプコピー・コンパイラに伝える必要があります。確かに、あなたはtypescriptでlib全体を書き換えたくありません。しかし、解決策の宣言ファイルがあります。今ではすべて正常にコンパイルされます
export declare function f(): void;
:あなたはlib.d.ts
ファイルに次のように置くことによってlib.js
のための宣言ファイルを作成することにより、index.ts
に機能f
を使用することができます。 TypeScriptで書いている場合は、"declaration": true,
をtsconfig.json
ファイルに、-d
をtsc
に指定して、これらのファイルを自動的に生成することができます。
場合は
のでd.ts
ファイルではなく、元の.ts
ファイルのtypescriptですコンパイル時間の間に彼らのJavaScript対応(ファイル)と一緒に使用されているそれらを必要とする:あなたはあなたのlibが書かれたい
は時々、両方ts
とd.ts
ファイルが用意されていますが、開発者はd.ts
ファイルを公開するchosesが。これはnpm
リポジトリのチームがangular2
チームが選択したアプローチです。
.ts
は、TypeScriptコードファイルです。 .d.ts
はdeclaration fileで、通常、非TypeScript API(DOMやjQueryなど)のタイプを定義するために使用されます。
.d.tsファイルは、一般に型定義ファイルを示すものです。一般的には、JavaScriptの中にtypescriptのソースがないライブラリが存在します。 .tsファイルはあなたのタイスクリプトファイルになります
d.tsファイルには、さまざまな既存のJavaScriptライブラリの関数、小道具などの定義のみが含まれています。 (正確にタイプされたスクリプトの略)
.tsファイルは、あなたが開発したファイルであり、jsファイルに変換されます。 (Typed Scriptの略)
.d.tsファイルには、コンパイル時にjavascriptを生成するコードを入れることはできません。それは(通常は外部のjavascripライブラリの)定義のみです。例えば、.d.tsファイルに "declare"修飾子を付けずに "namespace"を定義するのは誤りです。
これまでのところ、私がタイプコピーライブラリを開発しているなら、 '.d.ts'ファイルを作成する必要はありません。 – Jordi
あなたのライブラリを消費するために、typescriptでなく** javascript **を書いている他の人には、 'd.ts'ファイルを提供する必要があります。しかし私が私の答えで言及したように、あなたはそれらを書く必要はありません、typescriptコンパイラによって自動的に生成されます。 –
「あなたはJavaScriptで書かれたあなたのライブラリをTypeScriptで書かれた人が消費するようにしたい」と反対です。「typescriptではなくjavascriptで書いている人があなたのライブラリを消費したい場合は、 d.tsファイルを提供する "。宣言ファイルは、Typescript開発者がサードパーティのJSファイルを使用するのに役立つものではありません。主にインテリセンスの形で、そしてあなたが提供した優れた例でも? –