Node.jsで管理されたTypeScriptプロジェクトでは、外部ライブラリとしてnpmパッケージを使用することができます。
パッケージ自体がTypeScript用の型定義ファイルを提供していればいいのですが、残念ながら提供していないことがままあります。
その場合でも、DefinitelyTypedというリポジトリで管理されている@types/<package-name>
という型定義パッケージが公開されていれば、それを使うことができます。
さて、この型定義パッケージはどのバージョンをインストールすればいいのでしょうか。
問題
今、TypeScriptプロジェクトにおいて<package-name>
パッケージをインストールしようとしています。
<package-name>
パッケージは、次のバージョンが公開されています。
1.0.0
1.0.1
1.1.0
2.0.0
また、このパッケージに対応する@types/<package-name>
パッケージは、次のバージョンが公開されています。
1.0.0
1.0.1
1.1.0
2.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
バージョンをインストールすればいいというわけです。