TypeScriptの「*.d.ts」について質問する

TypeScriptの「*.d.ts」について質問する

宣言ファイルについて興味があります。ある人から、宣言ファイルはC および C++ プログラミング言語のヘッダー ファイルに似ている.d.tsと聞きましたが、ファイルの動作はまったく同じではないようです。現在、.d.ts ファイルを適切に使用する方法がわかりません。.d.ts.h.d.ts

ファイルに.jsまたはファイルを追加できないようです。そのため、プロジェクトが機能するには、3 つのファイル タイプがすべて含まれている必要があります。質問は次のとおりです。.ts.d.ts

  1. 3 つのファイル間の関係は何ですか?

  2. ファイルをどのように使用すればいいのでしょうか*.d.ts、また、ファイルを永久に削除できるという意味でしょうか*.ts?

  3. もしそうなら、*.d.tsファイルはどの JS ファイルが自身にマッピングされているかをどのように知ることができるのでしょうか?

ベストアンサー1

「d.ts」ファイルは、JavaScript で記述された API に関する TypeScript 型情報を提供するために使用されます。これは、jQuery や Underscore などの既存の JavaScript ライブラリを使用することを前提としています。TypeScript コードからこれらを使用する必要があります。

jQuery やアンダースコアなどを TypeScript で書き直す代わりに、型注釈のみを含む d.ts ファイルを作成できます。そうすれば、純粋な JS ライブラリを使用しながら、TypeScript コードから静的型チェックの TypeScript の利点を活用できます。

これは、ステートメントの末尾に「.ts」拡張子を追加できないという TypeScript の制約のおかげで機能しますimport。そのため、たとえば などのファイルを参照するときにmy-module.js、その横に がある場合my-module.d.ts、TypeScript はそのコンテンツを含めます。

src/
  my-module.js
  my-module.d.ts
  index.ts

私のモジュール.js

const thing = 42;

module.exports = { thing };

私のモジュール.d.ts

export declare const thing: number;

インデックス.ts

import { thing } from "./my-module"; // <- no extension

// runtime implementation of `thing` is taken from ".js"
console.log(thing); // 42

// type declaration of `thing` is taken from ".d.ts"
type TypeOfThing = typeof thing; // number

おすすめ記事