Node.jsで管理されたTypeScriptプロジェクトでは、外部ライブラリとしてnpmパッケージを使用することができます。
パッケージ自体がTypeScript用の型定義ファイルを提供していればいいのですが、残念ながら提供していないことがままあります。
その場合でも、DefinitelyTypedというリポジトリで管理されている@types/<package-name>という型定義パッケージが公開されていれば、それを使うことができます。
さて、この型定義パッケージはどのバージョンをインストールすればいいのでしょうか。
問題
今、TypeScriptプロジェクトにおいて<package-name>パッケージをインストールしようとしています。
<package-name>パッケージは、次のバージョンが公開されています。
1.0.01.0.11.1.02.0.0
また、このパッケージに対応する@types/<package-name>パッケージは、次のバージョンが公開されています。
1.0.01.0.11.1.02.0.0
<package-name>パッケージの1.0.0バージョンをインストールしたい場合、@types/<package-name>パッケージはどのバージョンをインストールすべきでしょうか。
解答
<package-name>パッケージの1.0.0バージョンをインストールしたい場合、@types/<package-name>パッケージは1.0.xバージョンの最新版である1.0.1バージョンをインストールします。
$ npm i -D @types/<package-name>@1.0.1
または、パッチバージョンを省略して自動的に1.0.xバージョンの最新版をインストールします。
$ npm i -D @types/<package-name>@1.0
解説
DefinitelyTypedで管理されている型定義パッケージのバージョンは、Semantic Versioningにおけるメジャーバージョンとマイナーバージョンのみを本体のパッケージに合わせるようになっています。
This is because only the major and minor release numbers are aligned between library packages and type declaration packages.
出典:DefinitelyTyped/DefinitelyTyped: The repository for high quality TypeScript type definitions.
x.y.zバージョンに対する型定義パッケージのバージョンはx.y.0から始まり、x.y.1、x.y.2のようにアップデートされていきます。
The patch release number of the type declaration package (e.g. .0 in 10.12.0) is initialized to zero by Definitely Typed and is incremented each time a new @types/node package is published to NPM for the same major/minor version of the corresponding library.
出典:DefinitelyTyped/DefinitelyTyped: The repository for high quality TypeScript type definitions.
したがって、@types/<package-name>パッケージは1.0.xバージョンの最新版である1.0.1バージョンをインストールすればいいというわけです。