TypeScript 7.0 RC

474文字
2分
編集

TypeScript 7.0のリリース候補(RC)が公開された。既存実装をGoへ移植したネイティブコンパイラで、共有メモリ並列処理によりTypeScript 6.0比でおおよそ10倍の速度向上を目指す。型チェックの意味論は6.0と構造的に同一とされ、RC版は 7.0.1-rc として配布される。

sh
npm install -D typescript@rc

安定版のプログラムAPIは7.1以降の見込みのため、typescript-eslintなど typescript を直接 import するツールは6.0との併用が想定される。互換パッケージ @typescript/typescript6tsc6 を提供し、npmエイリアスで6.0を typescript として残しつつ7.0を別名で入れられる。

json
{
  "devDependencies": {
    "typescript": "npm:@typescript/typescript6@^6.0.0",
    "typescript-7": "npm:typescript@rc"
  }
}

パース・型チェック・emitを並列化する。型チェックワーカー数は --checkers(既定4)で調整でき、プロジェクト参照の並列ビルドは --builders で制御する。デバッグや外部オーケストレーション向けに --singleThreaded も追加された。--watch はParcel由来のファイルウォッチャをGoへ移植した基盤に載せ替えられ、大規模プロジェクトでのリソース消費が改善される。

6.0で導入された既定値と非推奨化が7.0では本格適用される。strict 既定が truemoduleesnexttypes が空配列、stableTypeOrdering が常時有効などが中心で、target: es5moduleResolution: node / classicbaseUrl などはエラーになる。rootDirtypes の変更が移行で影響しやすい。

json
{
  "compilerOptions": {
    "rootDir": "./src",
    "types": ["node", "jest"]
  },
  "include": ["./src"]
}

テンプレートリテラル型の推論はUnicodeコードポイント単位になり、絵文字 "😀" がサロゲートペア2つに分割されなくなる。JSDocベースのJavaScript解析もTypeScriptファイルに近い規則へ整理され、@enum の特別扱いやClosure風関数記法などは廃止方向にある。

エディタ向けにはVS Code向けTypeScript Native Preview拡張がLSP基盤で同じGoコンパイラを利用する。安定版7.0はおおむね1か月以内の公開を予定している。

#参考文献