メインコンテンツまでスキップ

列挙型 (enum)

TypeScriptでは、列挙型(enum)を用いると、定数のセットに意味を持たせたコード表現ができます。

列挙型を宣言するには、enumキーワードの後に列挙型名とメンバーを書きます。次の例では、Positionが列挙型名で、TopRightBottomLeftがメンバーになります。

ts
enum Position {
Top,
Right,
Bottom,
Left,
}
ts
enum Position {
Top,
Right,
Bottom,
Left,
}

enumキーワードはTypeScript独自のものです。なのでJavaScriptにコンパイルすると次のようなコードになります。

js
var 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 = {}));
js
var 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からの連番になります。

ts
console.log(Position.Top); // 0
console.log(Position.Right); // 1
console.log(Position.Bottom); // 2
ts
console.log(Position.Top); // 0
console.log(Position.Right); // 1
console.log(Position.Bottom); // 2

列挙型名は型として扱うことができます。

ts
let position: Position;
// ^^^^^^^^型
ts
let position: Position;
// ^^^^^^^^型