Node.js: 26 では --experimental-transform-types が bad option になる
Node 26.0.0 で --experimental-transform-types は削除された。フラグを残していると起動前に終了コード 9。ネイティブ実行は型ストリッピングのみ。
使う場面
package.json の scripts や .env、CI に --experimental-transform-types を書いて Node 26 へ上げたとき。Node 24 では動いていた .ts 直接実行が突然落ちる。
やり方
- リポジトリからフラグを探す:
bash
rg -n 'experimental-transform-types' -g '!node_modules'- フラグを削除する。Node 22.18+ / 24 / 26 では erasable な TypeScript はフラグなしで型ストリッピングされる。
enumや実行コード付きnamespace、パラメータプロパティなど、型削除だけでは足りない構文は次のどちらか:- 消去可能な書き方へ直す(
as constオブジェクトなど) tsxなど別トランスパイラ/ランナーを使う
- 消去可能な書き方へ直す(
公式: Node.js Modules TypeScript(v26 の History に Removed flag とある)。
注意点
- Node 24 では同フラグがまだ通る(警告付き)ことがある。24 と 26 で終了コードが 0 と 9 に分かれる、という実測報告あり。
- 型ストリッピングは型検査をしない。
tsc --noEmitは別途。 node_modules内の.tsは意図的に実行しない実装になっている(依存の直実行は想定外)。