TypeScript enum to object array

2024-04-02

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}]

実行方法

  1. TypeScriptコンパイラをインストールします。
  2. 次のコマンドを実行して、コードをコンパイルします。
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


HTML要素の幅と高さを取得する

offsetWidthとoffsetHeightは、要素の幅と高さをピクセル単位で取得します。ただし、これらのプロパティには、要素のボーダー幅とスクロールバーの幅が含まれます。getBoundingClientRect()は、要素の周りの矩形領域の情報を含むオブジェクトを返します。このオブジェクトには、要素の幅と高さ、および要素の左上隅の位置が含まれます。...


URLSearchParamsを使ってURLのクエリ文字列から値を取得する方法

URLのクエリ文字列は、"?""の後に続く文字列で、パラメータと値のペアを("&"で区切って記述します。この文字列から値を取得するには、いくつかの方法があります。方法URLSearchParamsは、URLのクエリ文字列を操作するためのオブジェクトです。...


【保存版】JavaScript非同期処理の教科書:コールバック、Promise、async/awaitを使いこなそう

コールバック関数引数最も基本的な方法は、非同期処理を行う関数の引数としてコールバック関数を渡し、そのコールバック関数に処理結果を返すという方法です。メリット:シンプルで理解しやすいネストが深くなるとコードが複雑になるエラー処理が煩雑になるPromiseは、非同期処理をより扱いやすくするためのオブジェクトです。Promiseオブジェクトには、thenメソッドとcatchメソッドがあり、処理完了後または処理失敗後に実行する処理を登録することができます。...


JavaScript フレームワークでのトークン認証とリクエスト再試行:Angular 4 Interceptor を用いた実装例

RxJS と Angular HTTP Interceptor を使用して、以下の手順で実装できます。HTTP Interceptor を作成するまず、HTTP_INTERCEPTORS プロバイダーに登録する HTTP Interceptor を作成する必要があります。...


【保存版】Next.js警告「Extra attributes from the server: data-new-gr-c-s-check-loaded... 」を完全解決する方法

原因この警告の主な原因は以下の2つが考えられます。ライブラリやツールによる自動追加: Google Analytics や Facebook Pixel などのライブラリやツールは、パフォーマンスやトラッキングのために、自動的に HTML 要素に属性を追加することがあります。これらの属性は、Next...