アンビエント宣言は、既存のコードの型情報を提供するために使用されます。
たとえば、TypeScript で次のように記述したとします。
module Example {
export class Test {
do() {
return 'Go';
}
}
}
var test = new Example.
クラス.
を見つけやすくするために、の後にオートコンプリートが表示されます。Test
いくつかの TypeScript コードから使用している JavaScript の負荷が既にある場合、このオートコンプリートは得られず、オートコンプリートを行った場所は型を認識しません。JavaScript ファイル全体を TypeScript で書き直すのではなく、代わりにアンビエント宣言を記述できます。
たとえば、次の JavaScript ファイルがはるかに大きく、TypeScript で書き直すのに長い時間がかかると想像してください。
var Example;
(function (Example) {
var Test = (function () {
function Test() {
}
Test.prototype.do = function () {
return 'Go';
};
return Test;
})();
Example.Test = Test;
})(Example || (Example = {}));
アンビエント宣言には型情報が含まれていますが、実装は含まれていません。
declare module Example {
export class Test {
do() : string;
}
}
これにより、TypeScript ですべてを書き直す必要なく、JavaScript の完全な型チェックとオートコンプリートが可能になります。
いつこれをしますか?通常、サードパーティの JavaScript を大量に使用する場合は、アンビエント宣言を記述します。ライブラリを更新するたびに TypeScript で書き直すことはできないため、アンビエント宣言を使用すると、影響を最小限に抑えて更新を行うことができます (新しい機能を追加する必要があるかもしれませんが、実装の詳細のために変更を加える必要はありません)。アンビエント宣言は、サードパーティ ライブラリが何をするかを示すコントラクトとして機能します。
アンビエント宣言の作成ガイド を読むと、詳細を確認できます。また、一般的な JavaScript ライブラリの既存のアンビエント宣言は、Definitely Typed で多数見つけることができます。