【れっきょがた】
列挙型(Enum) とは?
最終更新:
💡 候補の値に、意味の分かる名前を付ける型
曜日や方向などの候補に名前を付けて扱う型。TypeScriptではenumで数値や文字列の定数をまとめられる。具体的な機能や型の制約は言語によって異なる。
📌 このページのポイント
- TypeScriptではenumで名前付きの数値・文字列の定数を定義できる
- 数値enumの値をすべて省略すると0から増え、文字列enumでは値を明示する
- 通常のenumは実行時のオブジェクトにもなり、型検査と値の参照に使える
- const enumの出力は設定に左右され、外部入力の検証も別に必要
文字列の変数とどう違うの?
TypeScriptならenum Status { Active = 'active', Inactive = 'inactive' }と候補を定義できるよ。Status型の変数へStatus.Activeを入れて扱い、Status.Acitveのような存在しない名前は型検査で見つけられるんだ。
JavaScriptでも使える?
JavaScript自体にはTypeScriptのenum構文はないよ。TypeScriptの通常のenumはJavaScriptのオブジェクトとして出力される。TypeScriptでは、オブジェクトにas constを付けて候補の値から型を作る方法もあるんだ。
数値と文字列、どっちを選ぶの?
数値enumの値を全部省略すると0、1、2と増えるよ。文字列enumなら'active'のように値を明示でき、ログや受け渡しで意味を読み取りやすい。どちらを選ぶかは、既存のデータ形式や用途に合わせるんだ。
const enumは必ず速いの?
通常は参照箇所に値を埋め込むけど、preserveConstEnumsなどの設定で出力は変わるよ。ほかのプロジェクトに公開する場合はisolatedModulesとの制約や版の不一致による問題もある。名前だけで性能が必ず良くなるとは言えないんだ。
候補を決めれば、不正な入力も防げる?
まとめ:ざっくりこれだけ覚えればOK!
「列挙型(Enum)」って出てきたら「候補の値に名前を付けて扱う型」と思えばだいたいOK!
📖 おまけ:英語の意味
「Enumeration / Enum」 = 列挙/列挙型
💬 値を名前付きで列挙する仕組みだよ。どんな値や機能を持てるかは、言語のenumの規則によって違うんだ。