TypeScript 7.0 Beta 公開 - Goネイティブ移植でTSが約10倍高速化
- 既存のTypeScriptコンパイラをGoに移植した新しいネイティブ実装
- 「beta」ではあるが、日常業務やCIで今すぐ試せる程度には安定していると強調
- 新しいコードベースは再実装(rewrite)ではなく、既存実装を体系的に移植したもの
- 型チェックロジックはTypeScript 6.0と構造的に同一
- TypeScript 6.0比でしばしば約10倍高速な性能
- ネイティブコードの性能 + 共有メモリ並列化ベース
- Microsoft社内外の数百万LOCのコードベースですでに利用中
- Bloomberg、Canva、Figma、Google、Linear、Notion、Slack、Vercelなどと事前テスト
- CLIだけでなく、エディタ体験もより軽快かつ高速に改善
使用方法
- 現時点では別パッケージとしてインストール
npm install -D @typescript/native-preview@beta
- 既存の
tscの代わりにtsgoを実行
- 今後の安定版は再び
typescriptパッケージとtscエントリポイントで配布予定
TypeScript 6.0と並行利用
- 7.0 Betaは
@typescript/native-preview + tsgoとして提供
- 既存の
tscとtsgoを並べて実行しながら比較可能
- 安定版ではTS7が再び
tscの名称を使用
- TS6互換向けの
@typescript/typescript6パッケージも提供
- TypeScript APIに依存する既存ツールは、当面TS6 APIを使い続ける構成も可能
重要な制限
- 7.0 Betaはproduction-readyに近いが、安定したprogrammatic APIはまだない
- 安定APIは少なくともTypeScript 7.1以降、数か月後を目標
- TypeScript APIに直接依存するツール/プラグインは移行時に注意が必要
並列化
- パース、型チェック、emitなど複数段階を並列化
- 型チェックワーカー数を調整する
--checkersオプションを追加
- project referenceビルドを並列化する
--buildersオプションを追加
- 単一スレッド実行のための
--singleThreadedオプションを追加
- 大規模コードベースやモノレポで効果が大きいが、並列度を上げるとメモリ使用量も増える可能性あり
TypeScript 6.0基準の互換性
- TypeScript 7.0はTypeScript 6.0の型チェック/CLI動作との互換性を目標とする
- TS6でclean compileできるコードは、TS7でも同様にコンパイルされることを目標とする
- ただし、TS6の新しいデフォルト値とdeprecated機能の整理があわせて適用される
strict、module、rootDir、typesなどのデフォルト値の変化は既存プロジェクトで体感される可能性がある
- 特に
rootDirとtypesの変更はマイグレーション時に確認が必要
- 古いターゲット/モジュール設定やdeprecatedオプションを使うプロジェクトは、まずTS6への移行を経ることが推奨される
JavaScript/JSDoc の変更
- JSサポートをTypeScriptファイル解析方式とより一貫するよう再整理
- 一部のJSDoc/Closureスタイル構文と古いJSパターンの特別扱いを削除
- JS + JSDocベースのコードベースは別途確認が必要
エディタサポート
- VS Code向けのTypeScript Native Preview拡張機能を提供
- CLIと同じ基盤のため、エディタでも同様の性能改善
- auto-import、hover、inlay hints、code lens、JSX linked editingなどをサポート
- LSPベースのため、他のモダンなエディタ/ツールでも活用しやすい
今後の計画
- より効率的な
--watch実装を予定
- JSファイルのdeclaration emit parity対応を予定
- エディタ機能差の補完を予定
- 安定したprogrammatic APIはTypeScript 7.1以降
- TypeScript 7.0安定版は約2か月以内を目標
- RCはその数週間前に公開予定
まだコメントはありません。