列挙型 (enum)
TypeScriptでは、列挙型(enum)を用いると、定数のセットに意味を持たせたコード表現ができます。
列挙型を宣言するには、enumキーワードの後に列挙型名とメンバーを書きます。次の例では、Postionが列挙型名で、Top、Right、Bottom、Leftがメンバーになります。
typescriptenum Position {Top,Right,Bottom,Left,}
typescriptenum Position {Top,Right,Bottom,Left,}
enumキーワードはTypeScript独自のものです。なのでJavaScriptにコンパイルすると次のようなコードになります。
typescriptvar Position;(function (Position) {Position[Position["Top"] = 0] = "Top";Position[Position["Right"] = 1] = "Right";Position[Position["Bottom"] = 2] = "Bottom";Position[Position["Left"] = 3] = "Left";})(Position || (Position = {}));
typescriptvar Position;(function (Position) {Position[Position["Top"] = 0] = "Top";Position[Position["Right"] = 1] = "Right";Position[Position["Bottom"] = 2] = "Bottom";Position[Position["Left"] = 3] = "Left";})(Position || (Position = {}));
ご覧のとおり、列挙型名と同じ名前のオブジェクトが定義されます。列挙型のメンバーはオブジェクトのプロパティーになります。値は0からの連番になります。
typescriptconsole.log(Position.Top); // 0console.log(Position.Right); // 1console.log(Position.Bottom); // 2
typescriptconsole.log(Position.Top); // 0console.log(Position.Right); // 1console.log(Position.Bottom); // 2
列挙型名は型として扱うことができます。
typescriptlet position: Position;// ^^^^^^^^型
typescriptlet position: Position;// ^^^^^^^^型