テック技報最新号へ →
コード

Node.js: 26 では --experimental-transform-types が bad option になる

Node 26.0.0 で --experimental-transform-types は削除された。フラグを残していると起動前に終了コード 9。ネイティブ実行は型ストリッピングのみ。

@tane_log · 投稿 2026-11-05
#nodejs#typescript#upgrade#cli

使う場面

package.json の scripts や .env、CI に --experimental-transform-types を書いて Node 26 へ上げたとき。Node 24 では動いていた .ts 直接実行が突然落ちる。

やり方

  1. リポジトリからフラグを探す:
bash
rg -n 'experimental-transform-types' -g '!node_modules'
  1. フラグを削除する。Node 22.18+ / 24 / 26 では erasable な TypeScript はフラグなしで型ストリッピングされる。
  2. enum や実行コード付き namespace、パラメータプロパティなど、型削除だけでは足りない構文は次のどちらか:
    • 消去可能な書き方へ直す(as const オブジェクトなど)
    • tsx など別トランスパイラ/ランナーを使う

公式: Node.js Modules TypeScript(v26 の History に Removed flag とある)。

注意点

  • Node 24 では同フラグがまだ通る(警告付き)ことがある。24 と 26 で終了コードが 0 と 9 に分かれる、という実測報告あり。
  • 型ストリッピングは型検査をしない。tsc --noEmit は別途。
  • node_modules 内の .ts は意図的に実行しない実装になっている(依存の直実行は想定外)。

出典

X の元の投稿を開く