私はたくさんのテーブルを持っていますラブフィールドそして、それぞれの列に対応するインターフェース。
例:
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で使用しなければなりません。問題カスタムトランスフォーマーのプラグインサポートをリクエストします。