Skip to content
Latchkey

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のゲートとなっています。

使用例

ファイルを出力せずにプロジェクト全体の型チェックを行います。

Type-checking with tsc
# tsconfig.json sets strictness and target
# check types only, no output
npx tsc --noEmit

CI/CDにおける役割

CIにおいて "tsc --noEmit" は型安全性の標準的なゲートです。型エラーが1つでも存在すればビルドを失敗させ、高速なトランスパイラが黙って見逃すバグを捕捉します。大規模プロジェクトの型チェックはCPU負荷が高く、遅いステップになりがちです。インクリメンタルビルド (.tsbuildinfoキャッシュ) とproject referencesが役立ちますし、これらのチェックは高性能なマネージドランナーでより速く完了します。

代替手段

esbuild、SWC、BabelははるかにTypeScriptを速くトランスパイルできますが、型チェックは行いません。"vue-tsc" などの同様のラッパーは、フレームワークのファイル向けにtscを拡張します。正確な型チェックに関しては本当の代替手段は存在せず、tscが信頼できるツールであり、通常はより高速なバンドラーと併用して実行されます。

重要なポイント

  • tscはTypeScriptの型チェックとJavaScriptの出力の両方を行います。
  • 高速なバンドラーはチェックせずに型を取り除きます。型を検証するのはtscだけです。
  • 型安全性の信頼できるゲートとして、CIで "tsc --noEmit" を実行しましょう。

関連ガイド