TypeScriptコンパイラ (tsc) とは?わかりやすく解説
tscはTypeScriptのコンパイラです。コードを型に照らしてチェックし、TypeScriptをあらゆるランタイムで実行できる純粋なJavaScriptに変換します。
TypeScriptコンパイラは "tsc" として呼び出され、2つの仕事をこなします。コードが型注釈を守っているかを検証し、JavaScriptを出力します。多くのビルドツールは型をチェックせずに素早く取り除いてしまうため、CIで専用の型チェックステップとしてtscを実行することが非常に重要になります。
tscとは
tscはTypeScriptの公式コンパイラです。.tsファイルと.tsxファイルを受け取り、完全な型チェックを実行し、型エラーを報告し、JavaScriptに加えて任意で宣言ファイル (.d.ts) とソースマップを出力します。その挙動は、ターゲット、モジュール形式、strictの度合い、そして含めるファイルを設定するtsconfig.jsonによって制御されます。
型チェックとトランスパイルの違い
分離できる2つのタスクがあります。型のチェックと、JavaScriptの生成です。esbuild、SWC、Babelのような高速なツールは、型注釈をチェックせずに削除することでトランスパイルします。tscは実際に型を検証するツールであり、だからこそ "tsc --noEmit" (チェックのみで何も出力しない) は、別のツールがバンドルを行う場合でも標準的なCIのゲートとなっています。
使用例
ファイルを出力せずにプロジェクト全体の型チェックを行います。
# tsconfig.json sets strictness and target
# check types only, no output
npx tsc --noEmitCI/CDにおける役割
CIにおいて "tsc --noEmit" は型安全性の標準的なゲートです。型エラーが1つでも存在すればビルドを失敗させ、高速なトランスパイラが黙って見逃すバグを捕捉します。大規模プロジェクトの型チェックはCPU負荷が高く、遅いステップになりがちです。インクリメンタルビルド (.tsbuildinfoキャッシュ) とproject referencesが役立ちますし、これらのチェックは高性能なマネージドランナーでより速く完了します。
代替手段
esbuild、SWC、BabelははるかにTypeScriptを速くトランスパイルできますが、型チェックは行いません。"vue-tsc" などの同様のラッパーは、フレームワークのファイル向けにtscを拡張します。正確な型チェックに関しては本当の代替手段は存在せず、tscが信頼できるツールであり、通常はより高速なバンドラーと併用して実行されます。
重要なポイント
- tscはTypeScriptの型チェックとJavaScriptの出力の両方を行います。
- 高速なバンドラーはチェックせずに型を取り除きます。型を検証するのはtscだけです。
- 型安全性の信頼できるゲートとして、CIで "tsc --noEmit" を実行しましょう。