項目66 型宣言の依存関係に関わる3つのバージョンを理解する
型宣言の依存関係に関わるバージョンは3つある
ライブラリのバージョン
@typesのバージョン
TypeScriptのバージョン
バージョンのミスマッチが起こるパターンがいくつかある
ライブラリを更新したのに、その型宣言を更新し忘れるパターン
dependabotによるパッケージの自動更新をした際に発生しがち
対応方法
型宣言を更新してバージョンを同期させる
まだ型宣言が最新化されていない場合は、オーグメンテーションを使って、利用したい関数やメソッドを追加する
型宣言がライブラリより最新化が進んでいるパターン
ライブラリを型付けせずに(any型を使っているなど)使用していて、後から型宣言をインストールした際に発生する
対応方法
型宣言のバージョンと同期するようにライブラリをアップグレードするか、型宣言をダウングレードする
型宣言がプロジェクトで使っているよりも新しいバージョンのTypeScriptを必要とするパターン
ライブラリをアップグレードした際に、TypeScriptの必要バージョンを満たしていない場合に発生する
対応方法
TypeScriptのバージョンをアップグレードするか、古いバージョンの型宣言を利用する
上記で駄目な場合はdeclare moduleで型をもみ消す
@typesの依存パッケージの重複によるパターン
@types/fooと@types/barがともに依存している場合、プロジェクトで利用している@types/fooのバージョンと互換性がない場合に発生する
対応方法
npm ls @types/fooを実行して、型宣言が重複している原因を特定し、@types/fooまたは@types/barの依存バージョンを更新して互換性をもたせる
ライブラリを更新した場合は、必ず@typesも更新する
#TypeScript