
MicrosoftのTypeScriptチームは7月8日(現地時間)、TypeScript 7.0を正式にリリースしました。
今回のアップデートは単なるバージョンアップではなく、TypeScriptの歴史の中でも最大級の変革を含む内容となっています。特に注目すべきは、Goによるネイティブ移植によってビルド速度が大幅に倍向上したことです。ネイティブコードの速度、共有メモリによるマルチスレッド処理、そして数々の新たな最適化により、フルビルドにおいて通常8倍から12倍の高速化が実現しています。
なお、ネイティブ移植は可能な限り忠実に行われ、従来のコンパイラとの間に結果の一貫性と互換性を保つように実装されています。
TypeScript 7は以下のコマンドでインストールできます。
npm install -D typescript
ネイティブ化で実現した圧倒的な高速化
TypeScript 7は、従来のJavaScript実装からGoによるネイティブコードへと全面移植されました。これにより、以下のような劇的な改善が実現しています。
| コードベース | TypeScript 6 | TypeScript 7 | Speedup |
|---|---|---|---|
| vscode | 125.7s | 10.6s | 11.9x |
| sentry | 139.8s | 15.7s | 8.9x |
| bluesky | 24.3s | 2.8s | 8.7x |
| playwright | 12.8s | 1.47s | 8.7x |
| tldraw | 11.2s | 1.46s | 7.7x |

メモリ使用量も6〜26%削減されており、CIやローカル開発の両方で恩恵が得られます。
高速化はビルドだけではありません。エディターでの操作も大幅に改善されています。エラー表示までの時間が17.5秒が1.3秒に短縮し、自動補完、参照検索、診断のレスポンスが体感レベルで高速化しています。新しいLSPベースの言語サーバーにより安定性も向上し、クラッシュが60%減少、失敗コマンドが80%減少しています。
Slack、Vanta、Microsoft 内部チームなど大規模プロジェクトを持つ企業からも「開発体験が劇的に改善した」との声が寄せられているそうです。
TypeScript 6との共存と移行
TypeScript 7はまだAPIを提供していないため、ツールチェーンによっては6.0が必要なケースがあります。そのため、tsc6とtscを並行利用できる仕組みが用意されています。
@typescript/typescript6によりTypeScript 6のAPIを維持することができ、TypeScript 7と6をnpmエイリアスで共存することもできます。
Vue/Svelte/Astro/Angularなどの埋め込み型言語は、現時点ではTypeScript 6の利用が推奨されています。
その他改良
TypeScript 7では、内部処理の多くが並列化され、マシン性能や CI 環境に合わせて柔軟に最適化できるようになっています。
- パーサー、型チェック、emitが並列実行
--checkersで型チェックワーカー数を調整可能--buildersでプロジェクト参照ビルダー数を設定可能--singleThreadedで単一スレッドモードにも切り替え可能
TypeScript 6で導入された新しい挙動が7.0で正式採用され、いくつかの設定はハードエラー化されました。
-
strict: trueがデフォルトに -
module: esnextがデフォルトに -
target: 最新の安定ECMAScript -
types: []がデフォルトに(必要な型定義を明示する必要あり) -
es5ターゲット廃止 -
moduleResolution: node/node10廃止 -
baseUrl廃止(相対パスへ移行)
JSDocベースのJavaScriptサポートも大幅に整理され、TypeScriptの型解析とより一貫した挙動になりました。
-
@enumの特別扱い廃止 -
Closure風の型記法廃止
-
?単体の型は不可(anyを使用) -
@classはコンストラクタ扱いされない
エディター統合も充実しています。VS CodeではTypeScript 7用の拡張が提供されており、今後は本体にも統合予定です。Visual Studioでも自動的にTypeScript 7が利用されます。
これからの TypeScript
TypeScript 7はネイティブ時代の幕開けとなるもので、今後は新APIの提供やさらなる高速化、機能改善が予定されています。リリースサイクルは従来どおり3〜4ヶ月ペースで継続される見込みです。
