7.3 Definitely Typed と @types
npmで配布されているモジュールの中には、TypeScript向けの型定義が同梱されていないJavaScript製のパッケージも多数存在します。この節では、それらをTypeScriptで安全に利用するための仕組みを学習します。
7.3.1 @types パッケージのインストール
Section titled “7.3.1 @types パッケージのインストール”型定義が同梱されていないパッケージ(例: express)をそのままTypeScriptでインポートしようとすると、「型定義ファイルが見つからない」というコンパイルエラーが発生します。
- 解決策: コミュニティ有志によって作成された型定義を提供するパッケージを、
npm install -D @types/パッケージ名コマンドで追加インストールします。 - 効果: これにより、コンパイラがモジュールの型情報を認識できるようになり、エディタでの入力補完や厳密な型チェックが可能になります。
- Definitely Typed: これらの
@typesパッケージ群は、Microsoftが運営する「Definitely Typed」というGitHubリポジトリに集約・管理されており、世界中の開発者が型定義の追加や修正に貢献しています。
コラム37 自分で型定義ファイルを作るには
Section titled “コラム37 自分で型定義ファイルを作るには”マイナーなライブラリで @types パッケージが存在しない場合や、型定義が古くて使い物にならない場合は、自分で型定義ファイル(.d.ts)を作成して対応することができます。
- 型定義ファイルの基本:
.d.tsで終わるファイルは、実際のプログラムの実装を含まず、型情報のみを定義するファイルとして扱われます。 declare module構文: ファイル内にdeclare module "パッケージ名" { ... }のブロックを作成し、その中でエクスポートされる変数や型を宣言します。- 構文の特殊性:
const result: number;のように、実際の値(=)を書かずに型のみを示す特殊な構文を使用できます。 - 便利な型の追加: ライブラリのソースコードや公式ドキュメントを読み解き、必要に応じてリクエストやレスポンスの型などを独自に
export typeしてあげると、そのライブラリを使用する側にとって非常に使いやすい型定義になります。