我在 Lovefield 中有很多表以及它们各自拥有的列的接口(interface)。
例子:
export interface IMyTable {
id: number;
title: string;
createdAt: Date;
isDeleted: boolean;
}
我想将此接口(interface)的属性名称放在这样的数组中:
const IMyTable = ["id", "title", "createdAt", "isDeleted"];
我不能直接基于接口(interface) IMyTable
创建一个对象/数组,这应该可以解决问题,因为我会动态获取表的接口(interface)名称。因此,我需要在界面中迭代这些属性并从中获取一个数组。
如何实现这个结果?
最佳答案
从 TypeScript 2.3 开始(或者我应该说 2.4,因为在 2.3 中,此功能包含 a bug,已在 < em>typescript@2.4-dev), 你可以创建一个自定义转换器来实现你想做的事情。
实际上,我已经创建了这样一个自定义转换器,可以实现以下功能。
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']
不幸的是,自定义转换器目前并不那么容易使用。您必须将它们与 TypeScript 转换 API 一起使用,而不是执行 tsc 命令。有 an issue请求对自定义转换器的插件支持。
关于javascript - 获取 Typescript 接口(interface)的键作为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43909566/