TypeScript enum to object array
TypeScript列挙型をオブジェクト配列に変換する方法
map 関数を使う
最も簡単な方法は、map
関数を使って列挙型の各メンバーをオブジェクトに変換することです。
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = Object.keys(MyEnum).map((key) => ({
name: key,
id: MyEnum[key],
}));
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
このコードでは、まず Object.keys(MyEnum)
を使って列挙型のすべてのメンバー名を取得します。次に、map
関数を使って各メンバー名を変換し、オブジェクトを作成します。オブジェクトには、name
プロパティと id
プロパティが含まれます。name
プロパティにはメンバー名、id
プロパティにはメンバーの値が格納されます。
Object.entries
関数を使って列挙型のすべてのメンバーをキーと値のペアの配列に変換することもできます。
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = Object.entries(MyEnum).map(([key, value]) => ({
name: key,
id: value,
}));
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
手動で変換する
列挙型のメンバー数が少ない場合は、手動でオブジェクト配列に変換することもできます。
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = [
{
name: "A",
id: 1,
},
{
name: "B",
id: 2,
},
{
name: "C",
id: 3,
},
];
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
このコードは、列挙型の各メンバーを手動でオブジェクトに変換し、オブジェクト配列を作成します。
どの方法を使うかは、列挙型のメンバー数やその他の要件によって異なります。
TypeScript列挙型をオブジェクト配列に変換するには、いくつかの方法があります。どの方法を使うかは、状況によって異なります。
map 関数を使う
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = Object.keys(MyEnum).map((key) => ({
name: key,
id: MyEnum[key],
}));
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
Object.entries 関数を使う
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = Object.entries(MyEnum).map(([key, value]) => ({
name: key,
id: value,
}));
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
手動で変換する
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = [
{
name: "A",
id: 1,
},
{
name: "B",
id: 2,
},
{
name: "C",
id: 3,
},
];
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
実行方法
- TypeScriptコンパイラをインストールします。
- 次のコマンドを実行して、コードをコンパイルします。
tsc filename.ts
node filename.js
出力
上記のコードを実行すると、次の出力がコンソールに出力されます。
[{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
TypeScript列挙型をオブジェクト配列に変換するその他の方法
for...in ループを使う
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray: { name: string; id: number }[] = [];
for (const key in MyEnum) {
objectArray.push({
name: key,
id: MyEnum[key],
});
}
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
このコードは、for...in
ループを使って列挙型のすべてのメンバーをループ処理し、オブジェクトを作成します。
ライブラリを使う
typescript-enum-to-object
などのライブラリを使って、列挙型をオブジェクト配列に変換することもできます。
import { enumToObject } from "typescript-enum-to-object";
enum MyEnum {
A = 1,
B = 2,
C = 3,
}
const objectArray = enumToObject(MyEnum);
console.log(objectArray); // [{name: "A", id: 1}, {name: "B", id: 2}, {name: "C", id: 3}]
javascript arrays typescript