概要
マイクロソフトは7月8日、コンパイラをGoで全面的に書き直したTypeScript 7.0を正式リリースした。従来JavaScriptで実装されていたコンパイラをネイティブコードに移植したことで、マイクロソフトは「10倍高速なネイティブ移植版」と位置づけている。6月18日にリリース候補(RC)版が公開されてから約3週間でのGA(一般提供)到達となった。既存の型チェックの挙動やコマンドライン操作との互換性は維持されており、npm install -D typescript@rcでRC版を試していた開発者は、正式版へ問題なく移行できる。
パフォーマンスの詳細
実プロジェクトでのベンチマークでは劇的な速度向上が確認されている。VS Codeのビルドは125.7秒から10.6秒(11.9倍)、Sentryは139.8秒から15.7秒(8.9倍)、Playwrightは12.8秒から1.47秒(8.7倍)に短縮された。メモリ使用量も6〜26%削減され、VS Codeの場合は5.2GBから4.2GBに減少している。エディタ体験も改善し、VS Codeでファイルを開いてからエラー検出が完了するまでの時間は17.5秒から1.3秒へと大幅に短縮された。この高速化は、解析・型チェック・出力など多くの処理段階を並列実行できるアーキテクチャによるもので、ファイル間の処理をほぼ独立させることで大規模コードベースでのスケーラビリティを高めている。並列化を制御する--checkers(デフォルトでワーカー4つ)や、プロジェクト参照のビルドを並列化する--buildersといった新フラグも導入されたほか、デバッグや資源制約環境向けに--singleThreadedフラグも用意された。ファイル監視機能もParcelのウォッチャーをGoに移植する形で刷新されている。
破壊的変更と設定のデフォルト変更
7.0では設定のデフォルト値が大きく変わっている。strictモードがデフォルトで有効になったほか、moduleのデフォルトはesnext、typesは(従来の自動スキャンから)空配列[]、rootDirは./となった。また非推奨とされていた機能は明確なエラーを返すようになり、ES5ターゲットの廃止、AMD/UMDモジュールの非対応、classicモジュール解決の撤廃、baseUrlの非サポートなどが該当する。細かな仕様変更としては、テンプレートリテラル型がUnicodeのコードポイントを自然な形で保持するようになった点も挙げられ、例えば"😀abc"はUTF-16のサロゲートペアではなく["😀", "abc"]として分割される。
エコシステムへの影響と今後の展望
一方で、Vue、Svelte、Astro、MDX、Angularのテンプレートなど、プログラマティックAPIを必要とするフレームワークは現時点でTypeScript 7を利用できない。これは安定したプログラマティックAPIがまだ提供されておらず、7.1で導入予定であるためだ。当面の回避策として、TypeScript 7のCLIとTypeScript 6.0を併用し、エディタ側のサポートを6.0で担う運用が推奨されている。typescript-eslintのようなツール向けには、@typescript/typescript6パッケージがtsc6実行ファイルを提供し、名前空間の衝突を避けつつTypeScript 6.0のAPIに並行アクセスできるようにしている。実運用での検証も進んでおり、Slackはマージキューの待ち時間を40%削減しCIの型チェックを7.5分から1.25分に短縮、Vantaは大規模プロジェクトで9倍の高速化、マイクロソフトのニュースサービス部門はCIビルドで月400時間の削減、Canvaはエラー検出時間を58秒から4.8秒に短縮したと報告している。マイクロソフトは7.0リリース後に機能開発を再開し、3〜4か月ごとに新版を出す方針で、次のTypeScript 7.1ではエンベデッドフレームワーク向けの新しいプログラマティックAPIが導入される見込みだ。