@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 といいます。

例えば、jestJavaScriptのテストフレームワークです。これをTypeScriptについても同様にテストしたい場合に @types/jest が必要になります。そうしないと、jestにおける型がないため、テストがうまく動きません。

どういうときに使うか?

TypeScript + JavaScriptの環境になる場合は @types/hoge が必要なケースが多いようです。先ほどの @types/jest ではテストファイル自体も型チェックするかどうかで必要かどうかが分かれていたりします。

各JSライブラリ、フレームワークをTypeScriptでも使いたい場合は DefinitelyTypedをつかうべきかどうか検討できると導入がスムーズかと思いました。

参照元

@types - TypeScript Deep Dive 日本語版