目次

Microsoftは2026年10月20日、型チェックの高速化、メモリ使用量の削減、外部ツール向けのプレビューAPIを備えたTypeScript 7.1 Betaを公開しました。開発チームはコンパイラの性能を今すぐ検証でき、ツール開発者やフレームワークのメンテナーは新たな連携方法を評価できます。

主なポイント#

  • Microsoftの測定では、型チェックの速度はTypeScript 7.0の1.2~1.9倍となり、メモリ使用量は15.8~49.6%削減されました。
  • プレビューAPIにより、JavaScriptツールからネイティブコンパイラの構文解析や型情報にアクセスできますが、既存の連携には変更が必要です。
  • コンテンツマッパーは、Vueの.vueファイルなどの複合ファイルを、エディタとコマンドラインでチェックするための共通の連携機構を提供します。
  • DOM定義の更新と条件型チェックの厳格化により、既存プロジェクトで新たなエラーが発生する可能性があります。

チェックの高速化とメモリ削減#

TypeScript 7.1 Betaは、内部データ構造の小型化と、ファイル変更後の解析結果の再利用改善により、Go製のネイティブコンパイラを最適化しています。これにより、型チェックの待ち時間が短くなり、必要なメモリも減ります。

Microsoftは、5つのコードベースでTypeScript 7.0と7.1 Betaを比較しました。テストにはデフォルトの型チェック用スレッド4本と--noEmitを使用しており、出力ファイルを生成せずにチェックした結果です。

| コードベース | 7.0の時間 | 7.1 Betaの時間 | 7.0のメモリ | 7.1 Betaのメモリ | |---|---:|---:|---:|---:| | mui-docs | 22.2秒 | 11.9秒 | 8,093 MiB | 4,079 MiB | | vscode | 21.6秒 | 17.7秒 | 8,387 MiB | 6,943 MiB |

5つのプロジェクト全体では、速度は1.2~1.9倍に向上し、メモリ使用量は15.8~49.6%減少したと報告されています。これらはMicrosoftによる測定値です。CIのコスト削減を見積もる際は、まず自分たちのリポジトリで確認してください。

ツール開発者向けの新API#

プレビューAPIにより、JavaScriptツールからネイティブコンパイラの構文解析や型情報にアクセスできます。エントリーポイントは同期操作用のtypescript/syncと非同期操作用のtypescript/asyncに分かれ、typescript/fsがファイルシステムを、typescript/astが構文木のノード型と列挙型を提供します。

スナップショットは、特定時点のプロジェクトやプログラムの状態を保持します。ツールは変更されたファイルの情報を渡すことで、以前のスナップショットから新しいスナップショットを作成でき、プロジェクト全体を再送する必要がありません。以前のスナップショットも保持すれば、更新前後の診断結果を比較できます。

このAPIは、TypeScript 6.0まで提供されていたAPIとは異なります。従来のインターフェースに依存するツールには明示的な移行作業が必要で、7.1 Betaをインストールするだけでは既存の連携は動作しません。ツール開発者はまず、連携に必要な操作がプレビューAPIで提供されているか確認してください。

フレームワーク向けコンテンツマッパー#

コンテンツマッパーにより、プラグインは複合ファイルをTypeScriptが解析できるコードに変換できます。プラグインは生成コードと元ファイルの対応関係も提供するため、TypeScriptはエラーやエディタの支援機能を正しいソース位置に結び付けられます。

同じ仕組みが、コマンドラインでのチェックとエディタ機能の両方を支えます。これは、マークアップ、スクリプト、スタイルが1つのファイルに共存するVueの.vueのような形式で重要です。Microsoftによると、Astro、CSS Modules、Ember、MDX、Svelte、Vue向けに試作や実装が進められています。

プロジェクトでは、tsconfig.jsonのトップレベルにあるcontentMappersフィールドで、パッケージと対応する拡張子を指定してプラグインを設定します。設定前にパッケージが利用可能か確認してください。MicrosoftのVueの例で使われた@vue/content-mapperは、発表時点ではnpmに公開されていませんでした。

モジュールと標準ライブラリの更新#

型宣言でインポート属性に対応できるようになりました。たとえば、type: "text"を持つインポートが文字列を返すと宣言すれば、1つの宣言で.txtと.mdの両方を扱えます。ランタイムやバンドラーもその属性に対応している必要があり、型宣言だけでファイルの読み込みが実装されるわけではありません。

TypeScript 7.1は、WebAssemblyモジュール向けのimport sourceなど、ソースフェーズインポート構文も受け付けます。これにより、コードでWebAssembly.Moduleを取得し、後からインスタンス化できます。実行には引き続き、使用するツールチェーンとランタイムの対応が必要です。

--targetと--libに新設されたes2026を指定すると、Array.fromAsync()や、Base64・16進数変換用のUint8Arrayメソッドなど、対応する標準ライブラリの定義を利用できます。型の有無とは別に、ランタイムの対応状況も確認してください。

導入前に互換性を確認#

DOM定義の更新により、ブラウザー向けコードのチェック結果が変わる可能性があります。また、条件型チェックの厳格化により、ユニオン全体で成立する制約が、個別に評価した各メンバーでも成立すると仮定したコードが拒否される場合があります。

テスト用ブランチでnpm install -D typescript@betaを実行し、ベータ版をインストールしてください。同じ条件で、診断結果、チェック時間、ピーク時のメモリ使用量を現在のバージョンと比較します。Microsoftは発表から約1か月後にリリース候補版、その後に安定版を公開する予定ですが、これは計画であり、確定したリリース日ではありません。

次のステップ#

TypeScript 7.1 Betaを使うブランチで、リポジトリの型チェックコマンドに--noEmitを付けて実行し、所要時間と新たな診断メッセージを記録してください。

出典: https://gihyo.jp/article/2026/10/_typescript-7.1-beta

目次