トリプルスラッシュ・ディレクティブ

トリプルスラッシュ・ディレクティブ(Triple-slash directives)は、1つのXMLタグを含む1行コメントになります。 コメントの内容はコンパイラへの指令として使用されます。

トリプルスラッシュ・ディレクティブは、それが含まれる各ファイルの先頭でのみ有効です。

トリプルスラッシュ・ディレクティブは、別のトリプルスラッシュ・ディレクティブを含めて、単一行または複数行のコメントの前にのみ置くことができます。 それらがステートメントまたは宣言の後にある場合は、通常のコメントとして扱われて特別な意味を持たなくなります。

/// <reference path="..." />

/// <reference path="..." />は、このグループで最も一般的なものです。 これは、ファイル間の依存関係の宣言として機能します。

コンパイラに対して、コンパイル処理する際に追加のファイルを含めるように指示します。

また、--outまたは--outFileを使用して、出力を順序付ける方法としても機能します。 ファイルは、事前処理を通した後の入力と同じ順序で、出力ファイルの場所に出力されます。

事前処理の入力ファイル

コンパイラは全てのトリプルスラッシュの参照(reference)指令を解決するために、入力ファイルに対して事前処理を通します。 この処理の間に、追加のファイルがコンパイルに加えられます。

この処理はルートのファイルの集まりから開始されます。 このファイルの集まりとは、コマンドラインで指定されたファイル名、またはtsconfig.jsonファイルの"files"に指定されたものになります。

これらのルートのファイルは、指定された順序で事前処理されます。 ファイルがそのリストに追加される前に、そのファイル内のすべてのトリプルスラッシュの参照(reference)が処理されて、対象として含まれます。

トリプルスラッシュ参照(reference)は、ファイル内に表示されている順に深さ優先探索(depth first manner)で解決されます。

トリプルスラッシュ参照(reference)のパスは、ルートでなければ含めるファイルを相対的に解決します。

エラー

存在しないファイルを参照するとエラーになります。 また、自分自身をトリプルスラッシュ参照に指定しているファイルもエラーになります。

--noResolveの使用

コンパイラに--noResolveフラグが指定されると、トリプルスラッシュ参照は無視されます。 新しいファイルを追加することも、ファイルの順序を変更することもありません。

/// <reference types="..." />

/// <reference path="..." />のディレクティブと同じように、 依存性の宣言として/// <reference types="..." />が提供されます。 ただし、依存性は@typesパッケージ上で宣言されます。

/// <reference types="node" />を含む宣言ファイルは、 「このファイルは@types/node/index.d.ts内で宣言されている名前を使用するため、 このパッケージは宣言ファイルと一緒にコンパイルに含める必要がある」ことを宣言します。

これらの@typesパッケージ名を解決するプロセスは、 import文でモジュール名を解決するプロセスに似ています。 トリプルスラッシュの型参照のディレクティブ(triple-slash-reference-types directives)を簡潔に言い表すのであれば、 パッケージの宣言をimportするものと言えるでしょう。

d.tsファイルを手動で作成する場合にのみ、これを使用してください。

コンパイル中に生成される宣言ファイルに対して、 コンパイラはあなたのために/// <reference types="..." />を自動的に追加してくれます。 生成されるファイル内の/// <reference types="..." />は、 結果的にファイルが参照する@typesパッケージから宣言を使用する場合にのみ追加されます。

他の方法で.tsファイル内の@typesパッケージへの依存関係を宣言するには、 コマンドライン上で--typesを使用するか、tsconfig.json内で指定します。 詳細については、tsconfig.jsonの@types、typeRoots、typesを参照してください。

/// <reference no-default-lib="true"/>

このディレクティブ(指令)は、デフォルトのライブラリとするファイルを指定します。 このことはlib.d.ts(とその亜種)の先頭にコメントされています。

このディレクティブは、コンパイル時にデフォルトのライブラリ(つまり、lib.d.ts)を含めないようにコンパイラに指示します。 これは、コマンドライン上で--noLibを渡すことと同様の影響を与えます。

また、--skipDefaultLibCheckを渡すと、 コンパイラは/// <reference no-default-lib="true"/>のあるファイルのチェックだけをスキップします。

/// <amd-module />

デフォルトでは、AMDモジュールは匿名で生成されます。 これは他のツールをバンドラーのように(例えば、r.js)使用して、モジュールを処理する際に問題になります。

amd-moduleディレクティブは、コンパイラに任意のモジュール名を渡すことを可能にしてくれます。

amdModule.ts
///<amd-module name="NamedModule"/>
export class C {
}

これはAMD定義の呼び出しの一部として、NamedModuleという名前をモジュールに割り当てることになります。

amdModule.js
define("NamedModule", ["require", "exports"], function (require, exports) {
    var C = (function () {
        function C() {
        }
        return C;
    })();
    exports.C = C;
});

/// <amd-dependency />

注意: このディレクティブは非推奨です。 代わりにimport "moduleName";文を使用してください。

/// <amd-dependency path="x" /;は、モジュールのrequire呼び出しで注入される必要がある非TSモジュールの依存性について、コンパイラに通知します。

amd-dependencyディレクティブは、任意のnameプロパティも持つことが可能です。 これはamd-dependencyに任意の名前を渡すことを可能にしてくれます。

/// <amd-dependency path="legacy/moduleA" name="moduleA"/>
declare var moduleA:MyType
moduleA.callStuff()

これは下記のJSコードを生成します。

define(["require", "exports", "legacy/moduleA"], function (require, exports, moduleA) {
    moduleA.callStuff()
});

 Back to top

© https://github.com/Microsoft/TypeScript-Handbook

このページは、ページトップのリンク先のTypeScript-Handbook内のページを翻訳した内容を基に構成されています。 下記の項目を確認し、必要に応じて公式のドキュメントをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • ドキュメントの情報が古い可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報やより分かり易くするための追記を行っている事があります。