Typescriptインターフェースのキーを文字列の配列として取得する 質問する

Typescriptインターフェースのキーを文字列の配列として取得する 質問する

私はたくさんのテーブルを持っていますラブフィールドそして、それぞれの列に対応するインターフェース。

例:

export interface IMyTable {
  id: number;
  title: string;
  createdAt: Date;
  isDeleted: boolean;
}

このインターフェースのプロパティ名を次のような配列で保持したいと思います。

const IMyTable = ["id", "title", "createdAt", "isDeleted"];

テーブルのインターフェース名を動的に取得するため、インターフェースに基づいてオブジェクト/配列をIMyTable直接作成することはできません。そのため、インターフェース内のこれらのプロパティを反復処理して、そこから配列を取得する必要があります。

この結果を達成するにはどうすればいいでしょうか?

ベストアンサー1

TypeScript 2.3 (または2.4と言うべきでしょうか、 2.3ではこの機能にはバグこれは修正されました[メールアドレス]) を使用すると、目的を達成するためのカスタムトランスフォーマーを作成できます。

実は、私はすでにこのようなカスタムトランスフォーマーを作成しており、これにより次のことが可能になります。

https://github.com/kimamula/ts-transformer-keys

import { keys } from 'ts-transformer-keys';

interface Props {
  id: string;
  name: string;
  age: number;
}
const keysOfProps = keys<Props>();

console.log(keysOfProps); // ['id', 'name', 'age']

残念ながら、カスタムトランスフォーマーは今のところあまり使いやすくありません。tscコマンドを実行する代わりに、TypeScript変換APIで使用しなければなりません。問題カスタムトランスフォーマーのプラグインサポートをリクエストします。

おすすめ記事