
2026/07/09 1:06
TypeScript 7
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
TypeScript 7 は、大規模プロジェクトのビルド時間を大幅に短縮し、メモリ消費量を劇的に削減する最初のネイティブ Go ポートを導入することで変革的なアップデートをもたらします。ベンチマークにより大きな効率化が確認され:完全なビルド速度は 8 倍~12 倍向上しており、具体的な例として VS Code は 2 分以上からわずか 11 秒へ短縮され、Sentry や Bluesky のようなプロジェクトでも顕著な改善が見られました。これらの向上は、最適化された共有メモリマルチスレッドおよび Parcel にインスピレーションを得た新しい Go ベースのファイルウォッチャによるものであり、遅い C++ 依存関係を排除しています。重要なのは、このリリースが
@typescript/typescript6 パッケージを介して既存のツールとの逆向互換性を維持しながら、安定ビルドを標準フィードへ移行させる点です。新しい並列化制御(--checkers、--builders)によりパフォーマンスを微調整でき、デフォルトでは 4 つの型チェッカーワーカーが設定されます。開発者は現在、strict: true および stableTypeOrdering のような厳格なデフォルト設定の採用が必要となり、module と target についても更新されたデフォルト値に対応する必要があります。TS 6.0 から非推奨とされたいくつかのフラグが現在エラーとなっており、言語機能はテンプレートリテラルでのユニコードコードポイントを自然に扱うために進化し、@enum といった特定の JavaScript 構文に対して改訂された扱いが必要です。この移行はコード調整を必要とする必要な破断変化を導入しますが、業界全体の資源コスト削減と JavaScript 構文サポートの向上により重要な進化となっています。ユーザーはこれらのパフォーマンス恩恵を活用するために、新しい設定デフォルトを採用する前にパッケージマネージャを介してすぐに更新することを強く推奨されます。本文
TypeScript 7 のリリース:10 倍も高速化したネイティブポートの誕生
TypeScript 7 が本日リリースされました。これは、従来のコードベース構造とロジックを維持しつつ、Go で書き起こされた完全なネイティブポートです。これまでの「スケーラブルな JavaScript を提供する」という約束を堅く守りつつ、最新のハードウェアを最大限に活用するための新アーキテクチャへと進化しました。
インストールとエディタサポート
入手方法
npm から標準的なコマンドでインストールできます。ワークスペースには新しい
tsc 実行ファイルが導入され(npx tsc で実行可)、10 倍の高速化を享受できます。
npm install -D typescript
エディタ対応
主な開発環境である VS Code、Visual Studio、WebStorm などは TypeScript 7 を完全にサポートしています。
- VS Code: 専用拡張機能が既に利用可能で、自動導入されます。
- Visual Studio: ワークスペースに基づいて自動的に有効になります。
パフォーマンスの劇的向上
実装速度とメモリ効率
TypeScript 6 と比較し、ビルド時間が10 倍まで短縮され、総合メモリ使用量は大幅に削減されました。
| コードベース | TypeScript 6 | TypeScript 7 | 速度向上 | メモリ削減率 |
|---|---|---|---|---|
| vscode | 125.7s | 10.6s | 11.9 倍 | -18% |
| sentry | 139.8s | 15.7s | 8.9 倍 | -6% |
| bluesky | 24.3s | 2.8s | 8.7 倍 | -26% |
| playwright | 12.8s | 1.47s | 8.7 倍 | -11% |
| tldraw | 11.2s | 1.46s | 7.7 倍 | -15% |
エディタ上の体験改善:
- エラーファイルを開いて最初のエラーを表示するまでの時間:約 17.5 秒 → 1.3 秒未満(13 倍以上の高速化)
開発体験全体のスリム化
ビルド、参照検索、自動補完、診断など、開発サイクル全体の遅延が以前よりもはるかに短縮されています。
--watch モードでのフィードバックループも劇的に短縮され、素早いイテレーションが可能になりました。
本番環境での堅牢性:企業による検証
過去一年間、Microsoft 内(VS Code, Loop, Office など)や外部の主要企業(Bloomberg, Canva, Figma, Google, Linear など)の大規模チームにより、実世界のコードベースでテスト済みです。
- 言語サーバークラッシュ: 60% 以上削減
- 失敗するコマンド: 80% 以上削減
顧客からの声
- Slack: マージキュー時間を 40% 削減。CI 内の型チェック時間を約 7.5 分 → 1.25 分に短縮。ローカル開発での型チェックが再び可能に。
- Vanta: ビルド速度が最大で 9 倍 改善。
- Microsoft News: CI ビルド待ち時間が月間 400 時間 節約。
- PowerBI: エディタ体験を「救命措置」と評価し、rename 機能のサポートに成功。
- Loop: 以前「使用不可能」だった大規模モノレポジトリで、「驚異的」という評価を得て開発が再開。
- Canva: 言語サーバー高速化により、最初のエラー表示時間を約 58 秒 → 4.8 秒に短縮。
TypeScript 6.0 との並行運用と移行
現時点では TypeScript 7 の API が未実装(TypeScript 7.1 で予定)のため、旧版との並存が重要です。互換性パッケージ
を使用し、新旧を共存させることができます。@typescript/typescript6
パッケージのアライアス設定
ツールが
tsc6 を期待している場合や、既存の依存関係を維持しつつ 7.0 のビルド機能を使う場合に以下の設定を使用します。
npm install -D typescript@npm:@typescript/typescript6
または
package.json で設定:
{ "devDependencies": { "typescript": "npm:@typescript/typescript6@^6.0.2" } }
TypeScript 7 を再導入する場合:
{ "devDependencies": { "@typescript/native": "npm:typescript@^7.0.2", "typescript": "npm:@typescript/typescript6@^6.0.2" } }
高度な最適化:カスタムスケール制御
TypeScript 7 は、パースや出力エミッションなど独立性が高い工程の並列化に加え、「複雑な依存関係を持つ」型チェックや参照構築の並列化にも実験的なフラグをサポートしています。
フラグ一覧
| フラグ | 説明 |
|---|---|
| 型チェックワーカー数(デフォルト: 4)を指定。 推奨: コアが十分なマシンでは大きく増やせる。メモリ増加に注意。 |
| プロジェクト参照ビルダー数を制御。 推奨: モノレポジトリなどで有用。メモリのコストと平衡調整が必要。 |
| 完全にシングルスレッド動作。 使用: デバッグ、6/7 パフォーマンス比較、資源制限環境向け。 |
チェッカー並列化の実績(--checkers 8
の例)
--checkers 8チェッカー数を増やすことで、さらに高速化が図れます。
| コードベース | TypeScript 6 | TypeScript 7 (デフォルト) | TypeScript 7 () |
|---|---|---|---|
| vscode | 125.7s | 10.6s | 7.51s |
| sentry | 139.8s | 15.7s | 12.08s |
| bluesky | 24.3s | 2.8s | 2.01s |
| playwright | 12.8s | 1.47s | 1.16s |
注意点: チェッカー数を可変にすると順序依存の結果が浮上する可能性があるため、ビルド環境全体で固定値を指定することをお勧めします。
--watch モードの再構築
ファイル監視は Go で完全に書き直され、Parcel の C++ ウォッチャーからの移植版を使用しています。クロスプラットフォームかつ安定したパフォーマンスを実現し、大規模プロジェクトでも計算コストを抑えています。
6.0 からの変更点と互換性
TypeScript 7.0 は TypeScript 6.0 型チェック動作との完全互換性を維持しつつ(
stableTypeOrdering を有効かつ ignoreDeprecations を無効とした場合)、以下のデフォルト挙動を変更しました。
デフォルト設定の変更
| オプション | 旧デフォルト (6.0) | 新デフォルト (7.0) |
|---|---|---|
| false | true |
| various | esnext |
| es5 など | esnext の前版 |
| false | true |
| true (旧動作) | false |
| 可能だが非推奨でなくとも unstable | true (無効化不可) |
最も影響の大きい変更点
: デフォルトがrootDir
に変わりました。内部ソースディレクトリは明示設定必須(例:./
以外の場合)。src
: デフォルトがtypes
に変わりました。旧動作を復元するには[]
を指定、または必要な @types パッケージを明示する必要があります。["*"]
{ "compilerOptions": { "rootDir": "./src", "types": ["node", "jest"] // 必要なパッケージを明示 } }
非サポートになった機能(厳格なエラー発生)
: es5 のサポート終了。target
のサポート終了。downlevelIteration
:moduleResolution
、node/node10
のサポート終了。classic- 推奨:
,nodenextbundler
- 推奨:
:module
,amd
,umd
,systemjs
のサポート終了。none- 推奨:
,esnext
(バンドラー併用時)preserve
- 推奨:
: 相対パスでの指定のみ許可。baseUrl- 以下の設定は false にできない、または使用不可に:
,esModuleInteropallowSyntheticDefaultImports
(常に true と仮定されるため)alwaysStrict- ネームスペース宣言内の
キーワードmodule - インポートでの
キーワード(代わりにasserts
を使用)with
指令 (/// <reference no-default-lib />
下では無効)skipDefaultLibCheck
テンプレートリテラル型と Unicode
Unicode コードポイント(サージペア)を自然な文字として扱うようになりました。
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Head] : never; // 例:"😀abc" の場合 // TypeScript 6.0: ["\ud83d", "\ude00abc"] (分割されなかったペア) // TypeScript 7.0: ["😀", "abc"] (一つユニットとして扱われる)
JavaScript サポートの再検討
JSDoc コメントベースの分析に依存していた旧来の特殊パターン(
@enum, @class, ? の型使用など)は非推奨となり、TS ネイティブな構文への移行が促されます。これにより型推論の一貫性と精度が向上しています。
埋め込み言語と今後のロードマップ
現状の制限
- Vue, MDX, Astro, Svelte: TypeScript 7 のネイティブコンパイラはまだ使用できません(安定した程序的 API が未整備のため)。現在は VS Code 拡張機能などで「Disable」を選択する必要が生じる場合があります。
- Angular: エディタは TS 6.0、ビルド CLI (
) は TS 7.0 を使い分けるのが現実的です。tsc
まとめ
TypeScript 7.0 は、パフォーマンスだけでなく安定性と生産性を劇的に向上させるための重要なマイルストーンです。ネイティブポートにより、より高速で楽しいコーディング体験へようこそ。
– TypeScript チーム