宣言ファイル(d.ts)の公開
このガイドの手順に従って宣言ファイルを作成してきたので、今度はnpmに公開してみましょう。 宣言ファイルをnpmに公開するには、主に2つの方法があります。
- npmパッケージを作成するか、
- npm上の@typesに公開します。
宣言を公開するnpmパッケージを制御する場合、最初のアプローチが優先されます。 つまり、この場合は宣言とJavaScriptが常に一括りになります。
自分のnpmパッケージに宣言を含める方法について
パッケージに主となる.js
ファイルがある場合は、
package.json
ファイルに主となる宣言ファイルを指定する必要があります。
バンドルされた宣言ファイルを指すようにtypes
プロパティを設定します。
下記はその一例になります。
{
"name": "awesome",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts"
}
"typings"
フィールドは"types"
と同義であり、同じように使用できることに注意してください。
また、あなたの主となる宣言ファイルの名前がindex.d.ts
であり、
パッケージのルート(index.js
と同じ階層)にある場合は"types"
プロパティの指定は不要ですが、
それでも指定することをお勧めします。
依存関係
全ての依存性はnpmによって管理されます。
依存している全ての宣言パッケージがpackage.json
の"dependencies"
セクションに、適切に指定されていることを確認してください。
例えば、BrowserifyとTypeScriptを使用したパッケージを作成したとします。
{
"name": "browserify-typescript-extension",
"author": "Vandelay Industries",
"version": "1.0.0",
"main": "./lib/main.js",
"types": "./lib/main.d.ts",
"dependencies": [
"browserify@latest",
"@types/browserify@latest",
"typescript@next"
]
}
ここでは、パッケージはbrowserify
とtypescript
パッケージに依存しています。
browserify
は宣言ファイルがnpmパッケージにバンドルされていないので、
宣言のために@types/browserify
に依存する必要がありました。
その一方で、typescript
の宣言ファイルは依存性を追加で指定する必要はありません。
私たちのパッケージはそれぞれの宣言を公開しているので、
browserify-typescript-extension
(この例で示している)パッケージのユーザーは、これらの依存関係も必要とします。
こういった理由から、ユーザーがこれらのパッケージを手動でインストールする必要があったため、
"devDependencies"
ではなく"dependencies"
を使用しました。
もし、コマンドライン・アプリケーションしか書く予定が無く、私たちのパッケージをライブラリも使用する予定がないのであれば、
devDependencies
を使用しても問題ないでしょう。
注意事項
/// <reference path="..." />
/// <reference path="..." />
を宣言ファイルの中で使用しないでください。
/// <reference path="../typescript/lib/typescriptServices.d.ts" />
....
代わりに/// <reference types="..." />
を使用してください。
/// <reference types="typescript" />
....
詳細については、依存についてのセクションを確認してください。
依存宣言のパッケージ化
もし、あなたの型の定義が別のパッケージに依存する場合、
- それをあなたのものと結合したりせず、それぞれのファイル自身をそのままにしておいてください。
- あなたのパッケージ内の宣言も、コピーしないでください。
- 宣言ファイルをパッケージ化していない場合は、npmの型宣言パッケージに依存するようにしてください。
@typesの公開
@typesに属するパッケージは、 types-publisherツールを使用してDefinitelyTypedから自動的に発行(公開)されます。
あなたの宣言ファイルを@typesパッケージとして公開するには、 https://github.com/DefinitelyTyped/DefinitelyTypedにプルリクエストを送って下さい。
詳細については、貢献(contribution)のガイドラインのページを参照してください。
© https://github.com/Microsoft/TypeScript-Handbook
このページは、ページトップのリンク先のTypeScript-Handbook内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- ドキュメントの情報が古い可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。