MicrosoftがTypeScript 5.8の正式版をリリース、戻り値の型推論とErased Syntaxを改善

Microsoftは2025年2月27日、静的型付けJavaScriptツールチェーンの最新安定版となるTypeScript 5.8を公開しました。本バージョンでは、コンパイラの型推論能力がさらに強化され、特に条件分岐を含む関数の戻り値において、従来よりも厳格かつ正確な型チェックが可能になっています。これにより、開発者は複雑なロジック内での型の不一致をコンパイル時点でより確実に検知できるようになり、実行時のバグを未然に防ぐことが期待されます。
技術面での大きな進歩は、ECMAのType Annotationsプロポーザルに準拠したErasable Syntaxのサポート強化です。新しい--erasableSyntaxOnlyフラグを使用することで、実行時にコードとして残るenumや名前空間などのTypeScript固有の機能を制限し、JavaScriptエンジンが型定義のみを無視して即座に実行できるコード構成を強制できます。これにより、Babelやesbuildなどの外部トランスパイラを通さずにNode.jsなどのランタイムで直接実行する際の互換性と速度が向上します。
また、実務上の影響として、モジュール解像度のデフォルト設定が変更されました。Node.js環境での現代的なES Modules(ESM)開発を支援するため、--moduleおよび--moduleResolutionの設定において、新しい--module nodenextが推奨されるようになります。これにより、package.jsonのtypeフィールドに基づいた適切なインポート動作が自動的に適用され、CommonJSとESMが混在するプロジェクトでの構成の複雑さが緩和されます。開発者は自身のプロジェクトにおいて、この新しいフラグの導入とコンパイラ設定の見直しを検討する必要があります。
フェレット記者の用語メモ
esm
ESM(ECMAScript Modules)はJavaScriptの標準モジュールシステムで、`import`/`export`構文を使うよ。CommonJSの`require`/`module.exports`と違って、静的解析が可能でツリーシェイキングなどの最適化がしやすいのが特徴。Node.js環境でESMを使う場合、パッケージの`type`フィールド設定やファイル拡張子(`.mjs`)の扱いで混乱しやすく、特に既存のCommonJSベースのコードと混在させると、モジュールの解決順序やスコープの違いでエラーが出やすいのが落とし穴だね。
比較: CommonJS
要点を短く整理して掲載しています。詳細は出典を確認してください。


