次の方法で共有


JavaScript IntelliSense

Visual Studio では、すぐに使える強力な JavaScript 編集エクスペリエンスが提供されます。 TypeScript ベースの言語サービスを利用した Visual Studio は、豊富な IntelliSense、最新の JavaScript 機能のサポート、および定義への移動、リファクタリングなどの生産性機能を提供します。

Visual Studio の一般的な IntelliSense 機能の詳細については、「IntelliSenseの使用」を参照してください。

JavaScript IntelliSense では、パラメーターリストとメンバー リストに関する情報が表示されます。 この情報は、コードをより深く理解するためにバックグラウンドで静的分析を使用する TypeScript 言語サービスによって提供されます。

TypeScript では、いくつかのソースを使用してこの情報を構築します。

型推論に基づく IntelliSense

JavaScript では、ほとんどの場合、明示的な型情報は使用できません。 幸いなことに、通常、周囲のコード コンテキストを考えると、型を見つけ出すのはかなり簡単です。 このプロセスは型推論と呼ばれます。

変数またはプロパティの場合、型は通常、初期化に使用される値の型または最新の値の代入です。

var nextItem = 10;
nextItem; // here we know nextItem is a number

nextItem = "box";
nextItem; // now we know nextItem is a string

関数の場合、戻り値の型は return ステートメントから推論できます。

関数パラメーターの場合、現在推論はありませんが、JSDoc または TypeScript .d.ts ファイルを使用してこれを回避する方法があります (後のセクションを参照)。

さらに、次のような特別な推論があります。

  • コンストラクター関数とプロトタイプ プロパティへの割り当てを使用して指定された "ES3 スタイル" クラス。
  • CommonJS 形式のモジュール パターン。exports オブジェクトでのプロパティ割り当て、または module.exports プロパティへの割り当てとして指定します。
function Foo(param1) {
    this.prop = param1;
}
Foo.prototype.getIt = function () { return this.prop; };
// Foo will appear as a class, and instances will have a 'prop' property and a 'getIt' method.

exports.Foo = Foo;
// This file will appear as an external module with a 'Foo' export.
// Note that assigning a value to "module.exports" is also supported.

JSDoc に基づく IntelliSense

型推論で目的の型情報が提供されない場合 (またはドキュメントをサポートする場合)、JSDoc 注釈を使用して型情報を明示的に指定できます。 たとえば、部分的に宣言されたオブジェクトに特定の型を指定するには、次に示すように @type タグを使用します。

/**
 * @type {{a: boolean, b: boolean, c: number}}
 */
var x = {a: true};
x.b = false;
x. // <- "x" is shown as having properties a, b, and c of the types specified

前述のように、関数パラメーターは推論されません。 ただし、JSDoc @param タグを使用すると、関数パラメーターに型を追加することもできます。

/**
 * @param {string} param1 - The first argument to this function
 */
function Foo(param1) {
    this.prop = param1; // "param1" (and thus "this.prop") are now of type "string".
}

現在サポートされている JSDoc 注釈については、「タイプ チェック JavaScript ファイル の JSDoc 情報を参照してください。

TypeScript 宣言ファイルに基づく IntelliSense

JavaScript と TypeScript は同じ言語サービスに基づいているため、豊富な方法で対話できます。 たとえば、.d.ts ファイルで宣言された値 (typeScript のドキュメント 参照) に JavaScript IntelliSense を指定でき、TypeScript で宣言されたインターフェイスやクラスなどの型は、JSDoc コメントの型として使用できます。

以下に、(インターフェイスを介して) このような型情報を同じプロジェクト内の JavaScript ファイル (JSDoc タグを使用) に提供する TypeScript 定義ファイルの簡単な例を示します。

TypeScript 定義ファイルのする

型定義の自動取得

TypeScript の世界では、最も一般的な JavaScript ライブラリには .d.ts ファイルによって記述された API があり、そのような定義の最も一般的なリポジトリは、DefinitelyTypedにあります。

既定では、言語サービスは使用中の JavaScript ライブラリを検出し、ライブラリを記述する対応する .d.ts ファイルを自動的にダウンロードして参照して、より豊富な IntelliSense を提供しようとします。 ファイルは、%LOCALAPPDATA%\Microsoft\TypeScriptにあるユーザー フォルダーの下にあるキャッシュにダウンロードされます。

手記

この機能 tsconfig.json 構成ファイルを使用している場合は既定で 無効になりますが、以下で詳しく説明するように有効に設定できます。

現時点では、自動検出は npm からダウンロードされた依存関係 (package.json ファイルの読み取り)、Bower (bower.json ファイルの読み取り)、およびプロジェクト内の最も一般的な JavaScript ライブラリの上位 400 の一覧に一致するルーズ ファイルに対して機能します。 たとえば、プロジェクトに jquery-1.10.min.js がある場合、編集エクスペリエンスを向上させるために、ファイル jquery.d.ts がフェッチされて読み込まれます。 この .d.ts ファイルはプロジェクトに影響しません。