javascript - 获取 Typescript 接口(interface)的键作为字符串数组

标签 javascript typescript

我在 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/

相关文章:

javascript - 如何在 Ruby 注入(inject)中插入 Javascript 代码

javascript - 从 jquery 动态输入字段获取值

javascript - jQuery 获取隐藏输入的值

typescript - 在 monorepo 中使用 jest + typescript

javascript - 我如何检查 Angular 中的 Mobx 商店是否为空?

javascript - 按属性名称从另一个数组中选取数组

javascript - 将数字 chop 至小数点后两位而不进行四舍五入

javascript - 如何从reddit获取随机帖子

css - 如何从 typescript 修改sass文件中的参数值?

angular - 如何重置为默认值 bsDateRangePicker