導入
曜日や状態を 0, 1, 2 のような数値(マジックナンバー)で管理していると、「2 って何だっけ」とすぐ迷子になります。enum(列挙型)を使うと、意味のある名前で管理できます。また as const を使うと、配列やオブジェクトを「書き換えられないリテラル値」として扱えます。
説明
enum はひとまとまりの名前付きの値を定義します。値を省略すると 0 から順に自動で数値が振られます。
enum Weekday {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
}
console.log(Weekday.Monday); // 1
console.log(Weekday[1]); // "Monday"
文字列を値にした文字列 enumもよく使われます(デバッグ時に値を見て意味がわかりやすいです)。
enum Status {
Ok = "OK",
Error = "ERROR",
}
console.log(Status.Ok);
第3章で学んだタプル([string, number])を、変更不可のリテラル型として固定したいときは as const を使います。
const point = [10, 20] as const; // readonly [10, 20] という厳密な型になる
console.log(point[0], point[1]);
// point[0] = 5; // エラー: as const で readonly になっているので書き換え不可
やってみよう
Weekday に存在する値をいくつか console.log(Weekday[番号]) で表示して、数値から名前が引けることを確かめましょう。
演習
enum Level { Low, Middle, High } を作り、console.log(Level.Middle) でその値を表示してください(Low は 0 から始まります)。
ヒント1を見る
enum Level { Low, Middle, High } は Low = 0, Middle = 1, High = 2 になります。
ヒント2を見る
console.log(Level.Middle); と書きます。