本章では、TypeScript の動作概要について説明します。典型的な TypeScript プロジェクトの構造とは?何がどのようにコンパイルされるのか?IDE を使用して TypeScript を記述するにはどうすればよいか?
これは、TypeScript プロジェクトのファイル構造の一例です。
typescript-project/
dist/
ts/
src/
main.ts
util.ts
test/
util_test.ts
tsconfig.json
説明
ts/
ディレクトリには、TypeScript ファイルが含まれています。ts/src/
サブディレクトリには、実際のコードが含まれています。ts/test/
サブディレクトリには、コードのテストが含まれています。dist/
ディレクトリには、コンパイラの出力結果が格納されます。ts/
内の TypeScript ファイルを dist/
内の JavaScript ファイルにコンパイルします。例:ts/src/main.ts
は dist/src/main.js
にコンパイルされます(その他のファイルが生成される可能性もあります)。tsconfig.json
は、TypeScript コンパイラの設定に使用されます。tsconfig.json
tsconfig.json
の内容は次のようになります。
{
"compilerOptions": {
"rootDir": "ts",
"outDir": "dist",
"module": "commonjs",
···
}
}
次のように指定しました。
ts/
です。dist/
です。JavaScript で人気の IDE は次の 2 つです。
このセクションの記述は Visual Studio Code に関するものですが、他の IDE にも適用される場合があります。
重要なのは、Visual Studio Code が TypeScript ソースコードを 2 つの独立した方法で処理することです。
tsc
には、入力ファイルを監視し、変更されるたびにそれらを出力ファイルにコンパイルする --watch
モードがあります。その結果、IDE で TypeScript ファイルを保存するたびに、対応する出力ファイルがすぐに生成されます。tsc
を実行できます。そのためには、現在作業中のプロジェクト内、またはグローバルに(Node.js パッケージマネージャー npm を介して)インストールする必要があります。TypeScript ファイル main.ts
が与えられると、TypeScript コンパイラはいくつかの種類の成果物を生成できます。最も一般的なものは次のとおりです。
main.js
main.d.ts
(型情報が含まれています。JavaScript コードを除いた .ts
ファイルと考えてください)main.js.map
TypeScript は、.ts
ファイルではなく、.js
ファイルと .d.ts
ファイルで提供されることがよくあります。
ソースマップは、main.js
の出力コードの各部分について、それを生成した main.ts
の入力コードのどの部分を示します。この情報は、とりわけ、ランタイム環境が JavaScript コードを実行しながら、エラーメッセージに TypeScript コードの行番号を表示できるようにします。
npm レジストリは、巨大な JavaScript コードのリポジトリです。TypeScript から JavaScript パッケージを使用するには、その型情報が必要です。
.d.ts
ファイル、または完全な TypeScript コードが含まれている場合があります。DefinitelyTyped の宣言ファイルは、@types
名前空間内にあります。したがって、lodash
などのパッケージの宣言ファイルが必要な場合は、@types/lodash
パッケージをインストールする必要があります。
TypeScript コンパイラは、プレーンな JavaScript ファイルも処理できます。
--allowJs
オプションを使用すると、TypeScript コンパイラは入力ディレクトリの JavaScript ファイルを出力ディレクトリにコピーします。利点:JavaScript から TypeScript への移行を行う場合、JavaScript ファイルと TypeScript ファイルを混在させて開始し、徐々に JavaScript ファイルを TypeScript に変換できます。
--checkJs
オプションを使用すると、コンパイラはさらに JavaScript ファイルの型チェックを行います(このオプションを機能させるには、--allowJs
を有効にする必要があります)。利用可能な限られた情報に基づいて、できる限り型チェックを行います。どのファイルがチェックされるかは、ファイル内のコメントで設定できます。
// @ts-nocheck
が含まれている場合、型チェックされません。--checkJs
がない場合、コメント // @ts-check
を使用して、個々の JavaScript ファイルの型チェックを行うことができます。TypeScript コンパイラは、JSDoc コメントで指定された静的な型情報を使用します(例については後述)。徹底的に行えば、プレーンな JavaScript ファイルを完全に静的に型付けし、そこから宣言ファイルを取得することもできます。
--noEmit
オプションを使用すると、コンパイラは出力を作成せず、ファイルの型チェックのみを行います。
これは、関数 add()
の静的な型情報を提供する JSDoc コメントの例です。
/**
* @param {number} x - The first operand
* @param {number} y - The second operand
* @returns {number} The sum of both operands
*/
function add(x, y) {
+ y;
return x }
詳細情報:TypeScript ハンドブックのJavaScript ファイルの型チェック。