@typesとは
こんなものをpackage.jsonに見つける
"dependencies": { "@types/lodash": "^4.14.146", "@types/no-scroll": "^2.1.0", "@types/qs": "^6.9.0", "@types/sprintf-js": "^1.1.2",
(lodash...じゃない...?)
@types/hoge
というライブラリぽいやつがたくさんあったのですが、チームに途中から参加したため導入の目的、経緯がわかりませんでした。
@typesはTypeScriptのための型定義ファイル
端的に言えば、@types/hoge
でいうところの hoge
に対応する型定義ファイルを使えるようにしています。正確には DefinitelyTyped
といいます。
例えば、jest
はJavaScriptのテストフレームワークです。これをTypeScriptについても同様にテストしたい場合に @types/jest
が必要になります。そうしないと、jestにおける型がないため、テストがうまく動きません。
どういうときに使うか?
TypeScript + JavaScriptの環境になる場合は @types/hoge
が必要なケースが多いようです。先ほどの @types/jest
ではテストファイル自体も型チェックするかどうかで必要かどうかが分かれていたりします。
各JSライブラリ、フレームワークをTypeScriptでも使いたい場合は DefinitelyTypedをつかうべきかどうか検討できると導入がスムーズかと思いました。