JavaScript ファイルに型をつける
昨日に引き続きvuejs/vue-test-utils: 🔬 Utilities for testing Vue componentsを読んでいる。
で、読んでたら当たり前のように JavaScript のファイルに型があって、あれ?となったので調べた。
TypeScript の型: 既存の JavaScript ライブラリに型情報を追加する(.d.ts ファイル)|まくろぐ
Ambient Declarations を使うと JavaScript に型情報を付与できるらしい。
そういえばdeclare
キーワードは今までも見たことがあったが特に意識していなかった、これのことか。
既存の JavaScript ファイルの実装に型をつけたい場合は、同じディレクトリの階層で同じファイル名で.d.ts
を作らなくてはいけない。
./lib/hoge.js
なら./lib/hoge.d.ts
としなくてはいけないということ。
vue-test-utils/packages/test-utils(workspaces のひとつ)の package.json には"types": "types/index.d.ts"
という記述がある。
これは npm に公開されているライブラリが自身のコードに対して型宣言をしていて、package.json の types に型定義ファイルを指定することで、このライブラリをそのまま TypeScript として import できる。
ライブラリ自身の型定義の場合は package.json に書いておけば大丈夫(階層ごとに.d.ts を用意しなくてもよい)なのはなんで?と思ったけど、ライブラリは使われる側に型が知られればいいから、かな。
記事内にString
じゃなくてstring
を使う、というのが出てきた。
TypeScript: Documentation - Do's and Don'ts
これは去年の 6/3に書いたやつだな、と思って読み返していた。