本文へスキップ
MameTechNews
フロントエンド

TypeScript 7.1ベータ、型検査を速くし埋め込み言語のAPIを追加

## POINTS

  • ベータの速度比較は5コードベースで1.2〜1.9倍。メモリ削減が最も大きいmui-docsは49.6%減。
  • content mapperは外部コードを実行するため、`tsc --runExternalCode`とエディタ側の許可が必要。
  • 分配条件型の検査が厳しくなり、7.0まで通っていた型が7.1でエラーになることがある。

TypeScript 7.1 Betaはnpm install -D typescript@betaで入る。型検査4スレッド、--noEmitの比較では、時間はblueskyが4.48秒から3.89秒、mui-docsが22.2秒から11.9秒、sentryが19.6秒から15.1秒、t3code-serverが26.5秒から19.1秒、vscodeが21.6秒から17.7秒だった。メモリはmui-docsが8093MiBから4079MiBへ49.6%減り、ほかの4件も15.8〜24.6%減っている。

アンビエント宣言はdeclare module "*" with { type: "css" }のようにimport属性を見られる。import sourceは実行前のモジュールソースを受け取り、WebAssemblyではWebAssembly.Moduleとしてinstantiateへ渡せる。--target es2026が安定し、Math.sumPreciseやIterator.concatなどがlibへ入った。

content mapperは、拡張子ごとに外部パッケージがファイルを仮想のTypeScriptへ変換し、エラー位置を元ファイルへ戻す。Vue、Svelte、Astro、MDX、Ember、CSS Modules向けの試作がある。実行にはtsc --runExternalCodeが必要で、任意コードを走らせる許可になる。VS Codeではワークスペースの信頼とmapperの許可が要る。例の@vue/content-mapperは、記事時点ではnpmに無い。

ツール向けAPIは入口が分かれ、APIとProgramはusingで破棄する。分配される条件型では、分配後の型パラメータの制約が以前より厳しく、既存コードに新しいエラーが出ることがある。リリース候補は約1か月後、その後に正式版が続く。