目次
- 背景
- アンビエント宣言(declare)とは
- 型定義ファイルとは
1.背景
Branded Type について理解する
この記事の中でdeclareキーワードが出てきた為です。
2. アンビエント宣言(declare)とは
declare var foo: any;
foo = 123; // allowed
- 実装を定義しない宣言です。
- 他の場所に存在するコードを記述しようとしていることをTypeScriptに伝えることができます。
- 宣言された項目が実行時に存在しなければエラーになります。
サンプルコードは実行時にしかない為、エラーになります。foo = 123
3. 型定義ファイルとは
他のファイルで利用したい型(type/interface)を記述するファイルです。
この型宣言ファイルの定義に基づき、コンパイル時に型推論や型チェックが行われるようになります
例)JavaScriptで記述されたライブラリcalc.jsがあるとします。
exports.sub = function(a, b) {
return a - b;
}
型定義ファイルを以下のように宣言します。
export function sub(a: number, b: number): number;
これにより、exec.tsはcalc.d.tsを通してsub関数を認識することができ、コンパイルが通るようになります。
import { sub } from "./calc";
console.log(sub(100, 1));
動作確認用リポジトリ
型チェックもされています。
DefinitelyTyped
DefinitelyTypedというコミュニティプロジェクトが存在しており、ここにはJavaScriptで記述されたライブラリの型宣言ファイルが集まっています。
DefinitelyTypedに登録されている型宣言ファイルは、npmコマンドでプロジェクトに取り込むことができます。
npm install --save @types/jquery
トリプルスラッシュディレクティブ
viteのvite/clientで以下のような型定義ファイルを見つけました。
/// <reference types="vite/client" />
///をトリプルスラッシュディレクティブと言います。
- 1つのXMLタグを含む1行コメントです。
- それが含まれる各ファイルの先頭でのみ有効です。
- 別のトリプルスラッシュ・ディレクティブを含めて、単一行または複数行のコメントの前にのみ置くことができます。それらがステートメントまたは宣言の後にある場合は、通常のコメントとして扱われて特別な意味を持たなくなります。
型ディレクティブ
/// <reference types="..." />
型ディレクティブは型のimportのようなものです。
型定義ファイルに依存していることを示しています。
/// <reference types="vite/client" />
この例だとvite/types/clientに依存していることが分かります。
vitejs.dev guide Features
参考
- アンビエント宣言(declare)
- 型定義ファイル
- TypeScript】初心にかえってTypeScriptを理解する。
- Modules
- 【TypeScript】型定義ファイル(.d.ts)ファイルについて
- レガシーなアプリケーションにこそTypeScriptを採用するべき4つの理由
- アンビエント宣言(declare)と型定義ファイル(.d.ts)
参考になる記事を書いてくださった皆様ありがとうございました!
宣伝させてください!