IT-Q

ビルドの速いツール(esbuild や Babel など)でビルドしていたら、型エラーがあってもビルドが通っていました。なぜですか。

esbuild や Babel は型を取り除くだけで、型チェックをしないからです。型チェックは tsc --noEmit などで別に実行し、CI で失敗させます。isolatedModules も有効にしておきます。

面接官が見ているのは補強。変換と型チェックが別の工程だと分かっているか。

これは「tsc の型チェックに数分かかるようになりました。何から手を付けますか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • こうしたツールは1ファイルずつ型を取り除いて変換するだけで、型チェックはしない。型チェックは tsc で別に回す
    その通りです。CI では tsc --noEmit などで型チェックを別に実行します。
  • ツールの設定で型チェックが無効になっている
    設定の問題ではなく、そもそも型チェックをしない作りのツールです。
  • 型エラーは警告扱いなので、ビルドは通るのが正常
    tsc は型エラーがあると失敗を返します。通ったのは、型チェックをしていないからです。
  • TypeScript の版が古いから
    版の問題ではありません。変換と型チェックが別の工程だからです。

模範解答

こうしたツールは、TypeScript の型を取り除いて JavaScript にするだけで、型チェックはしません。公式も、TypeScript 以外の変換ツールは1ファイルずつしか処理しないため、型システム全体を理解する必要がある処理はできない、と説明しています。

そのため、型エラーがあってもビルドは通ります。型チェックは tsc --noEmit などで別に実行し、CI で失敗させるようにします。

こうしたツールと組み合わせるときは、isolatedModules を有効にしておくと、1ファイルずつの変換では正しく扱えない書き方を TypeScript が警告してくれます。

対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。