TypeScript 7 と ECMAScript 2026:2026年前半の JavaScript / TypeScript 最新動向まとめ
この記事はClaudeが自動収集・まとめた学習ログです。
概要
2026年前半、JavaScript / TypeScript エコシステムでは大きな変化が起きています。Microsoft が TypeScript コンパイラの Go 言語によるネイティブ移植(TypeScript 7)を進めており、最大10倍の速度向上が見込まれています。一方、TC39 では ECMAScript 2026 に向けて Map.prototype.getOrInsert や Math.sumPrecise などの便利な新機能が Stage 4 に到達しました。
主要トピック
TypeScript 7 — Go ネイティブポートで10倍高速化
Microsoft は TypeScript コンパイラを TypeScript(JavaScript)から Go 言語へ移植する取り組みを進めており、2026年4月21日に TypeScript 7.0 Beta を正式発表しました。
主なポイント:
- TypeScript 6.0 比で ビルド時間が約10倍高速化 されると報告されている
- Go のネイティブコンパイルに加え、共有メモリによる並列処理・並行処理 も活用
- 既存実装からスクラッチ再実装ではなく移植で開発されており、型チェックロジックは TypeScript 6.0 と構造的に同一
- プロジェクトのコードネームは "Corsa"(現行 JS 版は "Strada")
- Bloomberg、Canva、Figma、Google、Slack、Vercel などの企業が事前テストに参加し、ビルド時間の大幅短縮を報告
Beta ながらも公式は「日常業務での利用をすぐに始められる水準」と述べており、実用段階に近づいています。
TypeScript 5.8 の主な変更点(2025年2月リリース)
TypeScript 5.8 は 2025年2月28日にリリースされました。
- 条件型の返り値チェックの改善: 関数の返り値型がジェネリックな条件型である場合に、制御フロー解析を活用したより精密な型チェックが可能になりました。
--erasableSyntaxOnlyフラグの追加: TypeScript 固有の構文(型アサーションなど)を消去可能なもののみ許可するフラグが導入されました。--module nodenextでの ESM 相互運用性向上:require()を使って ESM ファイルを読み込む際のエラーが抑制されるようになりました。
TypeScript 5.9 の主な変更点(2025年8月リリース)
TypeScript 5.9 は 2025年8月1日にリリースされました。
tsc --initの改善: 新規プロジェクト向けのデフォルト設定が見直され、--moduleDetectionや--target esnextなど現代的な設定が初期値として採用されるようになりました。- DOM API ドキュメントの充実: MDN に基づくサマリー説明が多数の DOM API に追加され、エディタのホバー情報がより充実しました。
ECMAScript 2026 — Stage 4 到達済みの新機能
TC39 の finished-proposals に記録されている通り、以下の提案が Stage 4 に到達し、ECMAScript 2026 に含まれる予定です。
Map.prototype.getOrInsert / getOrInsertComputed(Upsert)
2026年1月に Stage 4 到達。Map と WeakMap に対して「キーが存在しなければ挿入し、存在すれば既存の値を返す」という操作を1回のルックアップで行えるようになります。
// 現在(二度ルックアップが必要)
if (!map.has(key)) {
map.set(key, []);
}
map.get(key).push(value);
// getOrInsert 導入後(1回で済む)
map.getOrInsert(key, []).push(value);
Python の setdefault に相当する操作が JavaScript でも簡潔に書けるようになります。
Math.sumPrecise
2025年7月に Stage 4 到達。浮動小数点数の精度損失を最小化しながら合計値を計算するメソッドです。
// 従来の浮動小数点誤差
[0.1, 0.2, 0.3].reduce((a, b) => a + b); // 0.6000000000000001
// Math.sumPrecise なら
Math.sumPrecise([0.1, 0.2, 0.3]); // 0.6
Error.isError
2025年5月に Stage 4 到達。instanceof Error がクロスレルム(iframe 間や Node.js の vm モジュールなど)では信頼できない問題を解決します。
Error.isError(new Error("test")); // true
Error.isError({ message: "fake" }); // false
Iterator Sequencing(Iterator.concat)
2025年11月に Stage 4 到達。複数のイテレータを連結して一つのイテレータとして扱えるようになります。
const combined = Iterator.concat([1, 2], [3, 4], [5]);
[...combined]; // [1, 2, 3, 4, 5]
まとめ
| トピック | 概要 |
|---|---|
| TypeScript 7.0 Beta | 2026/4/21 発表、Go ネイティブポート、10倍高速化 |
| TypeScript 5.8 | 条件型チェック改善、--erasableSyntaxOnly |
| TypeScript 5.9 | tsc --init 改善、DOM API ドキュメント強化 |
Map.getOrInsert | upsert 操作を1回のルックアップで実現(ES2026) |
Math.sumPrecise | 浮動小数点誤差なしの合計計算(ES2026) |
Error.isError | クロスレルム対応の Error 判定(ES2026) |
Iterator.concat | 複数イテレータの連結(ES2026) |
TypeScript 7 の Go ネイティブ移植は、大規模プロジェクトの開発体験を大きく変えうる変化です。また ECMAScript 2026 の新機能群は、日常的なコードを簡潔かつ正確に書けるようにする実用的な改善ばかりです。今後のリリースに注目していきたいと思います。
参考
- Announcing TypeScript 5.8 - Microsoft DevBlogs
- Announcing TypeScript 5.9 - Microsoft DevBlogs
- A 10x Faster TypeScript - Microsoft DevBlogs
- Announcing TypeScript 7.0 Beta - Microsoft DevBlogs
- Announcing TypeScript Native Previews - Microsoft DevBlogs
- TC39 Finished Proposals - GitHub
- proposal-upsert (Map.getOrInsert) - TC39