【TypeScript】TS 7 vs 6.0 型チェック速度を実測比較2026

TypeScript 7 と 6.0 の速度差を、並んで走る2つの抽象的なエンジン形状と光の軌跡で表したアイキャッチ画像

TypeScript 7.0と6.0の型チェック速度を同じソース・同じtsconfigで実測し、7.1〜8.8倍という倍率とメモリ削減を確かめます。移行で削除されるtsconfigオプションのエラー番号も確認できます。

目次

この記事が解決する悩み

  • TypeScript 7 が「10倍速い」と聞いたけど、自分のプロジェクトで何がどれだけ変わるのか分からない
  • 6.0 から 7.0 へ上げたいのに、どの tsconfig が壊れるのか把握できていない
  • 新しい --checkers フラグをどう設定すればいいか決められない

対象読者: 型チェックをローカルや CI で回している人。tsconfig.json を自分で管理している人
前提知識: tsc の基本操作と、target / module / moduleResolution といった主要オプションの意味

結論

同じソース・同じ tsconfig で測ると、TypeScript 7.0.2 の型チェックは 6.0.3 の 7.1〜8.8倍速いです。倍率はコードベースが大きいほど上がります。

どちらも手元に置いて比べるなら、公式が用意しているエイリアスをそのまま使うのが手っ取り早いですね。

$ npm install -D "typescript@npm:@typescript/typescript6@^6.0.2" "@typescript/native@npm:typescript@^7.0.2"

これで tsc が 7.0、tsc6 が 6.0 を指す2本立てになります。同じプロジェクトでそのまま叩き比べられます。

$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3

比較の条件

条件を揃えないと倍率の話ができません。ソースも tsconfig も完全に同じものを使い、起動方法だけを変えて計測しました。

  • ソース: 決定的に生成した合成コーパス2種類(小規模 300ファイル / 19,500行、大規模 3,000ファイル / 195,000行)
  • 依存関係: 各ファイルが前のファイルを import する線形のつながりを持ちます(大規模は深い依存チェーンになります)
  • 型の要素: generics、mapped types、template literal types、conditional types、クラス、インデックスアクセスを各ファイルに含めました
  • tsconfig: strict / target es2022 / module esnext / moduleResolution bundler / noEmit / skipLibCheck / types [](両者で完全に同一)
  • 起動方法: どちらも node から bin/tsc を起動(ランチャー差で片方に不利が出ないよう揃えました)
  • 計測: ウォームアップ後の3回の中央値(Windows 11 / Ryzen 9 PRO 8945HS・8コア16スレッド)

実測結果

型チェックの所要時間は次のとおりです。

対象 TypeScript 6.0.3 TypeScript 7.0.2 倍率
小規模(363ファイル・19,500行) 0.991s 0.139s 7.1倍
大規模(3,063ファイル・195,000行) 5.369s 0.612s 8.8倍

ファイル数には lib.d.ts などの標準ライブラリが含まれるため、ソースだけだと 300本 / 3,000本です。Microsoft が公表しているベンチマークは 7.7〜11.9倍なので、手元のコーパスでも近い水準が出ています。

なお 7.0 はランチャーの node を挟まずに tsc.exe を直接叩くと 0.540s でした。node を挟む分が約 72ms 乗っている計算になります。

チェック処理そのものは8〜15倍速い

--extendedDiagnostics を付けるとフェーズ別の時間とメモリが出ます。大規模コーパスでの値です。

項目(大規模) TypeScript 6.0.3 TypeScript 7.0.2
Check time 2.85s 0.296s
Bind time 0.33s 0.014s
Total time 4.85s 0.486s
Memory used 626MB 411MB

型チェックの処理時間だけを取り出すと 9.6倍で、メモリも約34%減っています。7.0 が「速い」と言われる所以はこのフェーズに集約されていますね。

小規模で倍率が落ちるのは、7.0 でもプロセスの起動とモジュール解決に一定の時間がかかるためです。0.139秒のうち型チェックに使われているのはごく一部なので、ファイル数が少ないほど倍率は小さく出ます。

–checkers は既定の4でほぼ決まる

大規模コーパスで --checkers を振ってみました。7.0 は型チェックを複数のワーカーに分けて並列化します。

設定 1 2 4(既定) 8 16 –singleThreaded
所要時間 1.484s 0.868s 0.612s 0.467s 0.450s 2.092s

--checkers 1 にすると 2.4倍、スレッドを止める --singleThreaded では 3.4倍遅くなります。既定の4でも並列化はかなり効いている証拠ですね。8コア16スレッドのこのマシンでは 8 → 16 の伸びが 0.02秒しかなく、実質8で頭打ちでした。

TypeScript 7 に上げる手順

順番は 3ステップです。

  • エイリアスで 7.0 と 6.0 を同居させる(前述のインストールコマンド)
  • tsconfig.json から削除されたオプションを消す
  • CI の型チェックを tsc に、エディタや lint は tsc6 のままにする

削除されたオプションはエラー番号で見つかる

6.0 で「非推奨」だったものが、7.0 では「削除済み」のエラーとして止まります。実測で踏んだものを並べます。

設定 7.0 のエラー
target: es5 TS5108(削除済み)
moduleResolution: node TS5108(削除済み)
baseUrl TS5102(paths への置き換え案内つき)
alwaysStrict: false TS5108(削除済み)

実際の出力はこうなります。

tsconfig.json(3,15): error TS5108: Option 'target=ES5' has been removed. Please remove it from your configuration.
tsconfig.json(6,5): error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
  Use '"paths": {"*": ["./*"]}' instead.

baseUrl は消すだけでなく、paths を書くならプロジェクトルートからの相対に書き換える必要があります。

ignoreDeprecations は 7.0 では効かない

6.0 は TS5107 で「"ignoreDeprecations": "6.0" を書け」と案内します。ところがその設定を残したまま 7.0 に上げると、TS5108 のまま動きません。

# 6.0 の案内(これは効く)
tsconfig.json(3,15): error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0.
  Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.

# 同じ tsconfig を 7.0 で読むと
tsconfig.json(3,15): error TS5108: Option 'target=ES5' has been removed. Please remove it from your configuration.

警告を黙らせる逃げ道は 7.0 では塞がっているので、オプション自体を消すのが唯一の道です。

つまずきポイント

  • Vue / Svelte / Astro / MDX はまだ移せない。 7.0 はプログラムから使う API をまだ提供していません。Volar のようにコンパイラを組み込むツールは 6.0 のままで、7.1 で新しい API が入る予定です。
  • typescript-eslint などは tsc6 側に残す。 公式の @typescript/typescript6 をエイリアスで入れておけば、lint とエディタは 6.0、CLI の型チェックは 7.0 という併用ができます。
  • types の既定が [] になった。 明示しないと @types/node のグローバルが読まれません。必要なら "types": ["node"] を書きます。
  • rootDir の既定が ./ になった。 プロジェクトの外に tsconfig.json を置いている構成では、出力の階層が一段深くなります。
  • tsconfig がある場所ではファイル指定で動かせない。 tsc a.ts は TS5112 で止まります(これは 6.0 でも同じ)。--ignoreConfig を付けると単体ファイルとして扱えます。
  • --checkers を増やすとメモリが増える。 ワーカーが型情報を重複して持つためです。メモリ制限のある CI では既定の4、厳しければ1に落とす判断も必要ですね。

実測メモ: --extendedDiagnostics の出力項目は世代で名前が変わります。同じコーパスでも6系は Lines of TypeScript: 195000 と Lines of Library: 56131 に分かれ、7系は Lines: 251144 として合算表示されました。行数を見比べるときは項目名まで確認してください。メモリは6系 641,209K / 7系 421,767K で、この差は Memory used の行に出ます。

まとめ

状況別にすると、選び方はこうなります。

状況 おすすめ 理由
通常のアプリを型チェックしている tsc(7.0)に上げる 7倍以上速くなり、メモリも減る
monorepo で project references を使っている 7.0 + --builders プロジェクト単位でも並列ビルドできる
Vue / Svelte などを書いている tsc6 を残して CLI だけ 7.0 7.0 に API がまだ無く、埋め込み型チェッカーが追従できない
メモリが厳しい CI ランナー --checkers 1 重複する型チェックを止めてメモリを抑える

速度差は「チェック処理」ではなく「起動とモジュール読み込み」で目減りするので、小さいプロジェクトほど倍率は控えめになります。まずはエイリアスで同居させて、CI の型チェックだけ 7.0 に差し替えるのが安全ですよ。

【広告】【Value AI Writer byGMO】高品質なSEO記事をAIで自動生成。

検証環境

OSWindows 11 (build 10.0.26200)
CPUAMD Ryzen 9 PRO 8945HS w/ Radeon 780M Graphics
メモリ28GB
言語/ツールTypeScript 7.0.2(ネイティブ。node_modules/@typescript/typescript-win32-x64 の tsc.exe)/ TypeScript 6.0.3(JavaScript 実装。node_modules/@typescript/old を tsc6 として実行)/ Node.js 24.16.0 / npm 11.13.0
使用コマンドnode node_modules/@typescript/old/bin/tsc –noEmit -p tsconfig.large.json / node node_modules/typescript/bin/tsc –noEmit -p tsconfig.large.json / –checkers 1・2・8・16 / –singleThreaded / –extendedDiagnostics
測定日2026-09-17

上記の環境で実際に実行して確認した結果です。環境が異なる場合は挙動が変わることがあります。

TypeScript 6.0.3 と 7.0.2 に同じコーパスを型チェックさせた実行ログ。小規模・大規模の所要時間、--checkers を振った結果、フェーズ別の時間とメモリ、削除されたオプション(TS5108 / TS5102)の実エラー、6.0 流の ignoreDeprecations が 7.0 で通らないことまでを1枚にまとめたもの
TypeScript 6.0.3 と 7.0.2 に同じコーパスを型チェックさせた実行ログ。小規模・大規模の所要時間、–checkers を振った結果、フェーズ別の時間とメモリ、削除されたオプション(TS5108 / TS5102)の実エラー、6.0 流の ignoreDeprecations が 7.0 で通らないことまでを1枚にまとめたもの

参考

本文の記述は以下の一次情報を確認して書いています。

あわせて読みたい

【広告】このサイトはConoHa WINGで運営しています。安定した高速サーバーで快適にブログを書けています。いつもありがとう!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次