2.2TypeScript公式Handbook「Enums」をもとにした解説です。列挙型enumは、任意の数の識別子に数値を定めます。数値が意味のある名前で扱えるということです。選択肢やオプションなどにわかりやすい名前をつけて、内部的には数値として処理することができます。列挙型を定める列挙型はenumキーワードのあとに名前(識別子)をつけて定めます。つぎの列挙型(ArrowKey)は、上下左右の矢印キーのキーコードに名前を与えました。代入を省くと、前の識別子の値からの連番になります。37,UP,RIGHT,DOWN}列挙型(ArrowKey)としてつくられるのは、つぎのようなオブジェクトです。40}列挙型は数が0以上のメンバーに数値を与えて定めます。数値は定数または計算値です。つぎの場合は定数とみなされます。初期値がなく、前のメンバーが定数をもつ。前のメンバーの定数に1加えた数値が与えられる。初期値のない先頭のメンバーには0が与えられる。メンバーがenum定数式の初期値をもつ。enum定数式はTypeScriptの式のサブセットで、コンパイル時に評価される。enumの定数式はつぎのいずれか。数値リテラル先に定められたenumメンバーを参照する。他の列挙型も参照できる。同じ列挙型のメンバーには列挙型の名前を添えなくてももよい。+、-、*、/、%、<<、>>、>>>、&、|、^にenum定数式がオペランドとして用いられた式。enum定数式がNaNまたはInfinityと評価されるとコンパイル時にエラーとなる。以上のいずれにも当てはまらない値は計算値として扱われます。0xFFFFFF)}この列挙型は、つぎのJavaScriptコードにコンパイルされます。{}));列挙型がランタイムのオブジェクトとされる理由のひとつは、識別子から値を参照できるだけでなく、値から名前が取り出せるようにするためです。列挙型のメンバーを定数として使うだけで、名前の取り出しも要らない場合には、キーワードenumの前にconst修飾子を添えれば、すべてのメンバーが定数とされ、計算値は使えなくなります。'↓';break;}console.log(direction);});このコードはつぎのJavaScriptにコンパイルされます。列挙型を表すオブジェクト(ArrowKey)がなくなり、メンバーの参照はすべて定数に置き替わります。その分コードは短くなりました。アンビエント列挙型アンビエント列挙型は、すでにある列挙型の形式を宣言するために用いられます。メンバーの初期値に、計算値は与えられません。TypeScript?」参照)。