ニュース

「TypeScript 7.0」が正式リリース ~1年をかけたGo移植で8〜12倍もの高速を果たす

メモリ使用量も 6〜26%削減。「6.0」で問題点を洗い出したうえでの移行が推奨

「TypeScript 7.0」が正式リリース

 米Microsoftは7月8日(現地時間)、「TypeScript 7.0」を正式リリースした。2025年5月のプレビュー公開からテストが重ねられてきたが、先月公開されたリリース候補(RC)版を経て、安定版として利用できるようになった。

 「TypeScript 7.0」は、プログラミング言語「TypeScript」の最新メジャーバージョン。従来のコンパイラー・言語サービスはTypeScript自身で記述されていた(Strada)が、本バージョンは1年以上をかけてGo言語へ忠実に移植された。ネイティブコードの速度、共有メモリによるマルチスレッド処理、新しい最適化により、フルビルドは「TypeScript 6.0」比でおおむね8~12倍高速になるという。大規模なオープンソースプロジェクトでの計測結果は、以下の通りだ。

コードベースTypeScript 6TypeScript 7高速化率
vscode125.7秒10.6秒11.9倍
sentry139.8秒15.7秒8.9倍
bluesky24.3秒2.8秒8.7倍
playwright12.8秒1.47秒8.7倍
tldraw11.2秒1.46秒7.7倍

 また、ビルド全体で必要となるメモリも6~26%少なく済む。高速化はエディター体験にも及んでおり、「Visual Studio Code」のコードベースでファイルを開いてから最初のエラーが表示されるまでの時間は従来の約17.5秒から1.3秒未満へと削減された。実に13倍以上高速化された格好だ。

 このような大規模なアップデートでは品質や互換性の低下が懸念されるが、Microsoft社内だけでなく、Bloomberg、Canva、Figma、Google、Notion、Sentry、Slack、Vercelといった著名企業とも協力しながら、実際の大規模コードベースを用いたテストを実施しているとのことなので安心してよいだろう。新しい言語サーバーは「TypeScript 6.0」に比べ、コマンドの失敗が80%以上、サーバーのクラッシュが60%以上削減。Slackからは、マージキュー時間の40%を解消し、CIでの型チェックが約7.5分から1.25分に短縮されたとのフィードバックが寄せられているという。

 「TypeScript 7.0」は従来どおり「npm」からインストール可能。「tsc」コマンドで利用できる。ナイトリービルドも、これまでの「@typescript/native-preview」から、通常の「typescript@next」へ順次戻される。

npm install -D typescript

 型チェックのロジックと挙動は「TypeScript 6.0」と互換で、「6.0」でクリーンにコンパイルできるコードはそのまま利用できる。一方で「6.0」で導入された新しい既定値をそのまま採用し、「6.0」で非推奨となっていたフラグや構文はハードエラーとなる。

 そのため、まずは「TypeScript 6.0」へ移行して問題点を洗い出しておくことが推奨されている。主な既定値の変更は、以下の通り。

  • 「strict」が既定で有効に
  • 「module」の既定が「esnext」に
  • 「target」は「esnext」の直前の安定版「ECMAScript」が既定に
  • 「noUncheckedSideEffectImports」が既定で有効に
  • 「libReplacement」が既定で無効に
  • 「stableTypeOrdering」が既定で有効に(無効化は不可)
  • 「rootDir」の既定が「./」に(srcなどの内部ソースディレクトリは明示的な指定が必要)
  • 「types」の既定が「[]」に(従来の挙動は「["*"]」を指定すれば復元できる)

 このほか、パース・型チェック・出力の並列実行を調整できる実験的な「--checkers」「--builders」フラグや、並列化を無効化する「--singleThreaded」フラグが導入された。型チェックワーカーの既定数は4だが、たとえば「--checkers 8」を指定すると、「vscode」のビルドは16.7倍まで高速化されたという。「--watch」モードも、「Parcel」バンドラーのファイルウォッチャーをGoへ移植した新しい基盤で作り直されている。

 エディターで利用する場合は、「Visual Studio Code」なら専用拡張機能を導入するだけでよい。数週間以内には「Visual Studio Code」本体にも同梱される予定だ。「Visual Studio」の場合、最新版であればワークスペースに応じて自動で有効化される。新しい言語サーバーはLSP(Language Server Protocol)ベースのため、そのほかのモダンなエディターでも動作する。

 なお、「TypeScript 7.0」にはプログラムから利用できるAPIが同梱されていない。新しいAPIは「TypeScript 7.1」で提供される見込み。それまでの間、「typescript-eslint」のようにAPIへアクセスするツール向けに、「6.0」を併用できる互換パッケージ「@typescript/typescript6」(「tsc6」コマンド)が用意されており、「npm」エイリアスでの導入が推奨されている。また、「Vue」や「Astro」、「Svelte」を使ったワークフローや、「Angular」テンプレート内の型チェックも当面は「TypeScript 7」を利用できないため、「6.0」の継続利用が必要となる。

 同チームは今後、新機能の開発に復帰し、これまでどおり3~4カ月ごとのリリースを予定しているという。