IT-Q

TypeScript の enum は、コンパイル後の JavaScript に何か残りますか。

残ります。enum は実行時のオブジェクトとして JavaScript に出力されます。型の注釈と違って取り除けないので、型を取り除くだけで動かす環境では使えません。

面接官が見ているのは補強。enum が実行時のコードを生むことを知っているか。

これは「参画先で、TypeScript をビルドせず Node.js で直接(型を取り除いて)動かす方針になりました。enum が多用されています。どうしますか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • 残る。enum は実行時のオブジェクトとして出力される
    その通りです。TypeScript の構文の中では例外的な存在です。
  • 何も残らない。型の情報なので消える
    型の注釈は消えますが、enum は値として残ります。
  • コメントとして残る
    コメントではなく、実際に動くオブジェクトとして残ります。
  • 開発ビルドでだけ残る
    ビルドの種類によらず残ります。

模範解答

残ります。enum は実行時のオブジェクトとして JavaScript に出力されます。(const enum は、使う側に値が埋め込まれ、既定ではオブジェクトは出力されません)型の注釈やインターフェースは、取り除けばそのまま JavaScript になりますが、enum は取り除くと、それを参照しているコードが動かなくなります。

同じ性質を持つものに、実行時のコードを含む namespace や、コンストラクタ引数に public などを付けたプロパティ宣言があります。

対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。