TypeScript の .d.ts ファイルを管理する tsd コマンドが非推奨になったみたいです。 typings というツールが十分使えるようになったから、だそうです。

簡単に試してみました。

インストール

$ npm install -g typings

npm install で普通にインストールできます。

普通に使ってみる

まずは適当なライブラリの型定義ファイルを検索してインストールしてみます。

$ typings search bluebird

レジストリは github.com/typings/registry にあります。デフォルトではここの npm ディレクトリを見るらしいです。

レジストリにあるのは JSON ファイルで、実際の定義ファイルは他のレポジトリのものが指定されています。

見つかった定義をインストールするには typings install を使います。

$ typings install -S sinon

--save -S オプションと --save-dev -D オプションを指定すると typings.jsondependenciesdevDependencies に保存してくれます。 npm などと同じように $ typings install とだけすると依存する定義ファイルをすべてインストールしてくれます。

既存の定義ファイルを管理する

レジストリにある定義は数が少ないです。既存の定義ファイルを使いたい場合は場所を指定します。

// a.d.ts

declare function f(x: number): number;
$ typings install -S file:a.d.ts --name a

file: で始まる場合はローカルにあるファイルを typings ディレクトリ以下に変換して配置します。 dtsm にはない機能です。

変換された結果はこんな感じになります。

// Compiled using typings@0.6.6
// Source: a.d.ts
declare module 'a' {
function f(x: number): number;
}

declare module 'a' { ... } でくくってくれます。これが嫌だったり declare module 'aaa' { ... } の形式で定義ファイルが書かれている場合は --ambient オプションをつけます。

$ typings install -S --ambient file:a.d.ts

この場合変換はされず、 dependenciesdevDependencies ではなく ambientDependenciesambientDevDependencies として他と区別されて typings.json に記録されます。

DefinitelyTyped の定義ファイルをインストールする

DefinitelyTyped にある定義ファイルも検索とインストールができます。 --source dt オプションか --ambient オプションで DefinitelyTyped が検索ソースになります。

$ typings search --ambient react

DefinitelyTyped にある定義ファイルは declare module 'aaa' { ... } の形式なのでインストール時に --ambient を指定する必要があります。

$ typing install --source dt --ambient react

--ambient を指定するとデフォルトで DefinitelyTyped から探してしてくれます。

インストールした定義ファイルが他の定義ファイルを読み込んでいる場合、画面にそのことが表示されるだけで実際にはインストールしてくれません。その場合自分でインストールする必要があるみたいなので、注意が必要です。

定義ファイルをつかう

インストールした定義ファイルをまとめたものが typings/main.d.ta にできています。/// <reference path="..." />tsconfig.jsonfilesmain.d.ts を書き加えれば使えます。

main.d.ts の隣に browser.d.ts もあります。 こっちはブラウザ向けです。 使わない場合 tsconfig.jsonexlude に加えておく必要があるかもしれません。

まとめ

  • typings.d.ts ファイルを管理するツール
  • typings search で検索
  • typings install でインストール
  • --ambient オプションで DefinitelyTyped の定義ファイルもインストールできる