index.d.tsの使い道

index.d.ts とは でぐぐったものの、核心に迫るような記事を見つけることができなかったので、まとめる。

index.d.ts は、 node_modules/@types 以下のディレクトリに入れられているモジュール群の中で使われていることをよく目にする。 中身を見てみると、型定義がされていたりするので、おそらく、 index.d.ts というファイルは型定義用のファイルとして使えば、まぁ割と一般的なソースコードに近づくものと思われる。

現在の私のプロジェクトでは、型定義をなるべくしない方針で開発を進めている。 resolveJsonModule を活用して、型定義はしない、というものだ。

しかしながら、 express.Request を拡張した型を作りたい、などの、 resolveJsonModule 用にモックデータを作ったらとんでもないことになる&結局 Request を継承している旨を伝える術がない、等の理由で、 resolveJsonModule 以外でなんとかしないといけない場合もある。

ただ、こんなケースは、プロジェクトの中では本当に列挙できるほど少ないものであることに加えて、コアな型拡張をするケースが当てはまる。こんなときに index.d.ts を定義して、その中に、型を突っこむと、そこそこきれいにプロジェクトがまとまると思う。

index.d.ts はどこにおいてもいいと思うが、私はプロジェクトルートに置いた。理由は、 index.d.ts の中に書かれている拡張型は、フォルダで横断的に定義されるため。

こんなかんじで、 index.d.ts を使ってみた( .d ってなんだろう)。