SJ blog
frontend
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

TypeScript 7がGoで書き直された——tscより10倍速いtsgoの仕組みと今すぐ試す方法

2026年1月公開のTypeScript 7(tsgo)はJavaScriptからGoへのコンパイラ全面書き直しにより、型チェックが30倍・コンパイルが10.8倍高速化。現在の本番利用範囲と移行の注意点を解説。

一言結論

TypeScript 7はGoで書き直されたコンパイラ(tsgo)により10.8倍のコンパイル高速化・30倍の型チェック高速化を達成したが、--noEmitモード(型チェックのみ)は98%超互換の本番利用可だがJSコード生成(emit)は未完。型チェックだけでも今すぐ試す価値がある。

何が変わったのか

2026年1月15日、MicrosoftはTypeScript 7(CLIツール名 tsgo)をリリースした。最大の変更点はコンパイラの実装言語:JavaScriptからGoへの全面書き直しだ。

TypeScriptコンパイラは長年JavaScriptで書かれており、Node.jsのV8エンジン上で動作していた。これが大規模プロジェクトで慢性的なボトルネックになっていた。

JavaScript/V8ベースのtscが遅かった理由:
  - V8のGC(ガベージコレクション)による予測不能な停止
  - Node.js起動オーバーヘッド(毎回数百msかかる)
  - シングルスレッド前提で並列型チェックが困難
  - ネイティブ言語に比べてメモリ効率が低い

GoがTypeScript 7の実装言語に選ばれた理由は3つある。

  1. ネイティブコンパイル → Node.js起動オーバーヘッドとV8 GCポーズが消える
  2. Goroutine → ファイル単位の並列型チェックを自然に実装できる
  3. 明確なメモリモデル → TypeScriptの複雑な型推論アルゴリズムを管理しやすいかたちで移植できた

パフォーマンス改善の実数

ベンチマーク結果(tsgo vs tsc 6.0、同一プロジェクト):

  型チェック速度:    30倍高速(0.10s → 0.003s)
  コンパイル速度:  10.8倍高速(全体平均)
  メモリ使用量:     2.9倍削減(68MB → 23MB)

実プロジェクトでの計測:
  VS Code(40万行TypeScript): 89秒 → 8.74秒(10.2倍)
  Sentry:                      133秒 → 16秒(8.3倍)
  Playwright:                   9.3秒 → 1.24秒(7.5倍)

プロジェクト規模が大きいほど恩恵が大きい。CI/CDで「型チェックが遅すぎる」と妥協していたプロジェクトが現実的な速度で動く。

今すぐ試す方法

ステップ1: tsgoをインストールする

npm install -g @typescript/native-preview

ステップ2: 既存プロジェクトで型チェックを実行する

# --noEmitモード(型チェックのみ、JSは出力しない)
tsgo --noEmit

# tsconfig.jsonを参照する場合
tsgo --noEmit -p tsconfig.json

# プロジェクト参照・増分ビルドも動作する
tsgo --build tsconfig.build.json

ステップ3: tscとの差異を確認する

# tscとtsgoの出力を比較して差異を確認
diff <(tsc --noEmit 2>&1) <(tsgo --noEmit 2>&1)

現時点でtscとの差異が確認されているのは74個のエッジケースのみ。98%以上のプロジェクトではそのまま動くはずだ。

何がまだできないか

2026年4月時点でtsgoが完全サポートしていないもの:

  ❌ JSコードの生成(emit)
     → 型チェックのみ使い、実際のビルドは tsc 6.0 を継続

  ❌ VS Codeのエディタ統合(tsserver相当)
     → 2026年中旬にopt-in VS Code拡張機能として提供予定

  ❌ 一部のエッジケース(74件)
     → tscとの出力差異がある。上記のdiffコマンドで確認

CIでの型チェックだけをtsgoに切り替え、emitはtscのままにするハイブリッド運用が現実的だ。

TypeScript 6.0との関係

TypeScript 6.0(2026年3月23日リリース)はJavaScriptベースの最後のメジャーバージョンで、tsgoへの移行ブリッジとして設計されている。

TypeScript 6.0で変わったデフォルト設定:
  - strict: true がデフォルト有効(従来はオプト・イン)
  - moduleResolution: "bundler" がデフォルト
  - target: "ES2022" がデフォルト(ES3/ES5は非推奨)
  - import assertions が廃止 → import attributes に移行
  - --stableTypeOrdering フラグ追加(tsgo出力との比較用)

TypeScript 6.0でビルドが壊れる場合は、tsgoの前にまず6.0対応を完了させることを推奨する。

移行ロードマップ

現在(2026年4月):
  ✅ tsgo --noEmit → 型チェックのみ本番利用可
  ⚠ emit(JSコード生成)→ tsc 6.0 を継続使用

2026年中旬(予定):
  - VS Code拡張機能でのtsgo統合(opt-in)
  - エディタ内のホバー型推論・自動補完がtsgoエンジンで動作

2026年後半〜2027年(予定):
  - tsgoがtscを完全置き換え
  - VS Code標準のTypeScript言語サービスがtsgoに切り替わり

まとめ

TypeScript 7のGoコンパイラは10倍超の高速化という数字以上の意味を持つ。CIの型チェックステップが10秒以下になれば、フィードバックループの質が変わる。今すぐtsgo --noEmitをCI/CDに追加して速度差を体験しておこう。emitはまだtscのままでいい。

参考リンク