TypeScript 5.8とは
TypeScript 5.8は、Microsoftが2025年2月28日に公開したリリースです。この記事では、公式リリース記事で確認できる変更だけを扱います。
TypeScriptはJavaScriptへ型構文を追加し、実行前の検査やエディタ補完を提供します。5.8では新しい構文を大量に増やすより、Node.jsとのモジュール連携、型検査、ビルド時の処理が改善されました。
主な変更
return内の条件式を細かく検査
条件演算子をそのままreturnする場合、各分岐を関数の戻り値型に対して検査するようになりました。
function getUrl(value: string | URL): URL {
return value instanceof URL ? value : value;
// valueがstringの分岐をTypeScript 5.8がエラーとして検出
}
anyが混ざるコードでも、誤った分岐を見つけやすくする変更です。
--module nodenextでrequire()からESMを扱う
Node.js 22以降で進んだCommonJSとES Modulesの相互運用に合わせ、--module nodenextではCommonJSからESMをrequire()する構成を扱えるようになりました。ただし、トップレベルawaitを含むESMなど、Node.js側の制約は残ります。
安定した--module node18
Node.js 18向けの挙動を固定したnode18モジュール設定が追加されました。nodenextの将来変化を取り込まず、Node.js 18に合わせた検査を行いたい場合に使います。
--erasableSyntaxOnly
Node.jsの型除去で直接実行できないTypeScript構文を検出するオプションです。
{
"compilerOptions": {
"erasableSyntaxOnly": true,
"verbatimModuleSyntax": true
}
}
この設定では、enum、実行時コードを含むnamespace、parameter propertiesなどが制限されます。
--libReplacement
@typescript/lib-*による標準ライブラリ置換の探索を制御できるようになりました。利用していない場合は探索を無効化できます。
Decoratorsについての訂正
Stage 3形式のDecorators対応はTypeScript 5.0で導入済みです。TypeScript 5.8固有の新機能ではありません。また、従来のexperimentalDecoratorsとは異なるため、既存コードの移行では公式ドキュメントを確認してください。
更新時の確認
npx tsc --noEmitで型エラーを確認するmoduleとmoduleResolutionを同時に確認する- Node.jsの実行バージョンを固定する
- CIとローカルで同じTypeScriptを使う
- リリース記事のBehavioral Changesを読む
まとめ
TypeScript 5.8は2025年2月公開です。中心となる変更は、条件式の戻り値検査、Node.jsのESM連携、node18、erasableSyntaxOnly、ビルド処理の最適化です。バージョン番号だけで導入せず、実行環境とモジュール設定を合わせて確認してください。