TypeScript enum エントリー名取得方法
TypeScriptでenumエントリーの名前を取得する方法
TypeScriptにおけるenumの各エントリーの名前を取得するには、以下の方法を使用します。
Object.keys()を使用する
enum Direction {
North,
South,
East,
West
}
const names = Object.keys(Direction);
console.log(names); // Output: ["North", "South", "East", "West"]
Object.keys(Direction)
は、Direction
オブジェクトのすべてのキー(エントリーの名前)を配列として返します。
Object.values()とObject.entries()を使用する
enum Direction {
North,
South,
East,
West
}
// エントリー名を取得
const names = Object.values(Direction).map(entry => entry.toString());
console.log(names); // Output: ["North", "South", "East", "West"]
// エントリー名と値を取得
const entries = Object.entries(Direction);
console.log(entries); // Output: [["North", 0], ["South", 1], ["East", 2], ["West", 3]]
Object.entries(Direction)
はエントリー名と値のペアを配列として取得します。Object.values(Direction)
はエントリーの値を取得し、map
で文字列に変換して名前を取得します。
for...inループを使用する
enum Direction {
North,
South,
East,
West
}
const names = [];
for (const key in Direction) {
if (Object.prototype.hasOwnProperty.call(Direction, key)) {
names.push(key);
}
}
console.log(names); // Output: ["North", "South", "East", "West"]
for...in
ループでエントリー名を取得し、hasOwnProperty
でプロトタイプチェーンからの継承プロパティを除外します。
enum Direction {
North,
South,
East,
West
}
const names = Object.keys(Direction);
console.log(names); // Output: ["North", "South", "East", "West"]
解説
names
変数にキーの配列を格納し、コンソールに出力します。Direction
はenumを定義しています。
enum Direction {
North,
South,
East,
West
}
// エントリー名を取得
const names = Object.values(Direction).map(entry => entry.toString());
console.log(names); // Output: ["North", "South", "East", "West"]
// エントリー名と値を取得
const entries = Object.entries(Direction);
console.log(entries); // Output: [["North", 0], ["South", 1], ["East", 2], ["West", 3]]
map
メソッドを使用して、各値を文字列に変換し、エントリー名を取得します。Object.values(Direction)
はエントリーの値を取得します。
enum Direction {
North,
South,
East,
West
}
const names = [];
for (const key in Direction) {
if (Object.prototype.hasOwnProperty.call(Direction, key)) {
names.push(key);
}
}
console.log(names); // Output: ["North", "South", "East", "West"]
- エントリー名を
names
配列に追加し、コンソールに出力します。 hasOwnProperty
メソッドを使用して、プロトタイプチェーンからの継承プロパティを除外します。for...in
ループを使用して、Direction
オブジェクトのキー(エントリー名)を反復処理します。
Reflect.ownKeys()を使用する
enum Direction {
North,
South,
East,
West
}
const names = Reflect.ownKeys(Direction);
console.log(names); // Output: ["North", "South", "East", "West"]
Reflect.ownKeys()
は、オブジェクトの自身のプロパティ(エントリー名)を配列として返します。
enum Direction {
North,
South,
East,
West
}
const names = [];
for (const entry of Object.values(Direction)) {
names.push(entry.toString());
}
console.log(names); // Output: ["North", "South", "East", "West"]
for...of
ループを使用して、エントリーの値を反復処理し、文字列に変換して名前を取得します。
Object.getOwnPropertyNames()を使用する
enum Direction {
North,
South,
East,
West
}
const names = Object.getOwnPropertyNames(Direction);
console.log(names); // Output: ["North", "South", "East", "West"]
Object.getOwnPropertyNames()
は、オブジェクトの自身の列挙可能なプロパティ(エントリー名)を配列として返します。
enums typescript