ビルドの速いツール(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
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。