TypeScriptのコンパイラがGoで書き直された。2026年4月21日にベータ版が公開されたTypeScript 7.0は、従来の約10倍のビルド速度を実現しています。
この記事でわかること
- TypeScript 7.0 BetaとProject Corsaの概要
- Go移植で実現した具体的なパフォーマンス改善
- 並列化の仕組みと新しいフラグ
- TypeScript 6.0からの移行方法
TypeScript 7.0 BetaとProject Corsaとは
TypeScript 7.0は、Microsoft社内で「Project Corsa」と呼ばれていたプロジェクトの成果物です。既存のTypeScriptコンパイラ(TypeScript自身で書かれ、JavaScriptにコンパイルされていた)を、Go言語へ移植しました。
移植にあたり、ゼロから書き直す方法はとっていません。既存の実装を構造的に忠実にポーティングしたため、型チェックのロジックはTypeScript 6.0と同一です。10年以上かけて構築されたテストスイートをすべてパスし、Microsoft社内外の数百万行規模のコードベースですでに運用されています。
Bloomberg、Canva、Figma、Google、Linear、Notion、Slack、Vercelなど多数の企業がプレリリース版をテストし、ビルド時間の大幅な短縮を報告しています。
なぜGoを選んだのか
Rustで完全に書き直す案もありました。しかしその場合、開発に数年かかり、既存のセマンティクスとの互換性を保証するのが困難になります。Goであれば既存コードを構造的にポーティングでき、約1年で高い互換性を維持したまま移植を完了できるという判断です。
Goのネイティブコード速度と共有メモリ並列処理の組み合わせが、10倍という速度改善の土台になっています。
具体的なパフォーマンス改善
Visual Studio Codeのコードベース(約150万行)のコンパイルで比較すると、TypeScript 6.0では約78秒かかっていた処理が、TypeScript 7.0では約7.5秒に短縮されました。PlaywrightやTypeORMなど他の大規模プロジェクトでも、10〜13倍の高速化が報告されています。
この改善はビルドだけにとどまりません。VS Code向けの拡張機能「TypeScript Native Preview」を使えば、エディタ上の補完やエラー表示も同じ高速な基盤で動作します。Language Server Protocolベースのため、VS Code以外のエディタやCopilot CLIでも利用可能です。
並列化の仕組みと新しいフラグ
TypeScript 7.0では、パース・型チェック・emit(出力)を並列に実行します。パースとemitはファイルごとに独立して処理でき、コードベースが大きいほど並列化の効果が出ます。
型チェックは固定数のワーカーに分割して処理されます。デフォルトは4ワーカーで、--checkersフラグで変更可能です。CPUコアが多いマシンでは増やすとさらに高速化し、CIランナーのような低リソース環境では減らすとオーバーヘッドを抑えられます。
モノレポ向けには--buildersフラグも追加されました。プロジェクトリファレンスの並列ビルド数を制御します。--checkers 4 --builders 4とすると最大16の型チェッカーが同時に走るため、マシンスペックに合わせた調整が重要です。
デバッグや外部ツールとの比較には--singleThreadedフラグでシングルスレッドモードに切り替えられます。
インストールと使い方
インストールはnpmから行います。
npm install -D @typescript/native-preview@beta
インストール後はtsgoコマンドが使えます。既存のtscと同じ動作をし、同じTypeScriptコードをコンパイルします。
npx tsgo --version
パッケージ名は正式リリース時にtypescriptへ変更される予定です。現時点では@typescript/native-previewという別名なので、TypeScript 6.0と並行して導入できます。
TypeScript 6.0からの移行で注意すべき変更点
TypeScript 7.0は6.0の新しいデフォルト設定を採用し、6.0で非推奨だった機能がハードエラーになります。主な変更点は以下のとおりです。
strictがデフォルトでtrueに変わりました。moduleのデフォルトはesnext、targetは現行の安定ECMAScriptバージョンになっています。
rootDirのデフォルトが./に変更されたため、src配下にソースを置いているプロジェクトでは明示的なrootDir指定が必要です。typesのデフォルトが[]になったため、@types/nodeなどグローバル型定義に依存するプロジェクトは明示的に列挙する必要があります。
廃止された設定にはtarget: es5、moduleResolution: node/node10、module: amd/umd/systemjsなどがあります。nodenextやbundlerへの移行が推奨されています。
まとめ
TypeScript 7.0 Betaは「ベータ」の名前に反して、すでに本番利用できる安定性を備えています。Go移植による10倍の速度改善は、大規模プロジェクトのビルド時間やエディタの応答速度を劇的に変えます。
正式版のリリース時期は未発表ですが、プログラマティックAPIの安定版は7.1以降の提供予定です。既存プロジェクトとの並行運用が容易な今のうちに、ベータ版を試してビルドパイプラインへの影響を確認しておくのがおすすめです。
