TypeScript の enum を for のような繰り返し構文で値を取得する

enum の値を for などの繰り返し構文で取得するサンプルコード。

enum は Object

Object らしい。

enum Color {
	Red,
	Green,
	Blue,
}
console.log(typeof Color)// Object

その1:Object.entries()

  • コンパイル時に es2017 以上のバージョンを指定しないと使えない。
  • number と string では取得できる値の数が違う
enum Color {
	Red,
	Green,
	Blue,
}

export enum Fruit {
	Apple = "apple",
	Lemon = "lemon",
	Banana = "banana",
}

for (const [key, value] of Object.entries(Color)) {
	console.log(`${key}: ${value}`)
	// 0: Red
	// 1: Green
	// 2: Blue
	// Red: 0
	// Green: 1
	// Blue: 2
}


for (const [key, value] of Object.entries(Fruit)) {
	console.log(`${key}: ${value}`)
	// Apple: apple
	// Lemon: lemon
	// Banana: banana
}

その2:Object.keys()

enum Color {
	Red,
	Green,
	Blue,
}

export enum Fruit {
	Apple = "apple",
	Lemon = "lemon",
	Banana = "banana",
}

Object.keys(Color).forEach((key) => {
	console.log(`${key}: ${Color[key]}`)
	// 0: Red
	// 1: Green
	// 2: Blue
	// Red: 0
	// Green: 1
	// Blue: 2
})


Object.keys(Fruit).forEach((key) => {
	console.log(`${key}: ${Fruit[key]}`)
	// Apple: apple
	// Lemon: lemon
	// Banana: banana
})