ニュース

「TypeScript 7」は10倍速くなる!? Microsoftが開発進捗を説明 ~注意点も

「TypeScript 6」は単なる「5.9」と「7」の橋渡し、「6.1」のリリースはナシ

同社のアナウンス

 米Microsoftは12月2日(現地時間)、公式ブログ「Dev Blogs」で「TypeScript 7」の開発進捗を明らかにした。「TypeScript 7」では「TypeScript」のコンパイラーと言語サービスが「JavaScript」ベース(Strada)から「Go」言語ベースのネイティブコード(Project Corsa)へ移行される予定で、劇的な高速化、メモリ効率の改善、並列処理への対応強化が実現される見込み。その一方で、変更が多岐にわたることから、その進捗や「TypeScript 5.9」「TypeScript 6」との互換性に懸念の声が寄せられていた。

エディターと言語サービス

 開発中の「TypeScript 7」は現在、「TypeScript (Native Preview)」として提供されているが、すでに十分な安定性があるようだ。コード補完や定義ジャンプ、リファレンス検索、リネームといった主要な機能が再実装済みで、従来の「TypeScript 5.9」と同じレベルで機能し、それでいて高速だという。

 細部ではまだ機能の再実装と不具合の修正が続いているものの、総体的に見て恩恵の方が大きいといったところのようだ。

コンパイラー

 コンパイラーに関しても、従来版の「tsc」とネイティブ版「tsgo」が選べる。型チェックの互換性はほぼ完全で、意図的な変更(非推奨、デフォルト値の変更)を除けば“自信をもって”使えるレベルだという。速度は「TypeScript 6」のほぼ10倍に達する。

「TypeScript 5.9」からの変更

 「TypeScript 5.9」から「TypeScript 7」で行われる変更のうち、主なものは以下の通りだ。

  • 「--strict」がデフォルトで有効に
  • 「--target」は最新の安定した「ECMAScript」(es2025)がデフォルトに
  • 「--target es5」は削除。「ES2015」がサポートされる最小バージョンに
  • 「--baseUrl」は削除
  • 「--moduleResolution node10」は、「bundler」と「nodenext」に置き換えた上で削除
  • 「rootDir」はカレントディレクトリがデフォルトに

 円滑な移行のため、設定ファイル「tsconfig.json」を自動更新するツール「ts5to6」もテスト中だという。

 一方で、「TypeScript」から「JavaScript」をエミットするパイプラインは完成していない。最新のWebブラウザーやランタイムをターゲットにしている場合は問題ないが、古いランタイムをターゲットにする必要がある場合は問題となる。これに関しては現在対応作業が進行中。

 また、「TypeScript 7」(Corsa)は既存の「Strada」APIをサポートしない(Corsa APIはまだ開発中)。「Strada」APIに依存するツールは動作しない。JavaScriptの型チェックとJSDocのサポートにも一部互換性がない点にも注意したい。

今後の予定

 もうすぐリリースされる「TypeScript 6.0」は、JavaScriptベースのリリースとしては最後となる。つまり、「TypeScript 6.1」がリリースされる予定はない。もしあるとしても、重要な不具合とセキュリティ脆弱性を修正するためのパッチリリース(6.0.1、6.0.2……など)のみだ。

 「TypeScript 6」は「TypeScript 5.9」と「TypeScript 7」を橋渡しするバージョンと位置づけられ、積極的にメンテナンスされることはない。「TypeScript 7」で削除される予定の機能が非推奨となるほか、型検査の挙動が「TypeScript 7」に合わせて変更されるため、「TypeScript 5.9」を利用中の場合は一旦「TypeScript 6」へ更新し、問題点を洗い出してから「TypeScript 7」への移行を進めるとよいだろう。