将 Typescript 接口的键作为字符串数组获取

新手上路,请多包涵

我在 Lovefield 和他们各自的接口中有很多表,它们有哪些列。

例子:

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

我想将此接口的属性名称放在这样的数组中:

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

我不能直接基于接口 IMyTable 创建一个对象/数组,这应该可以解决问题,因为我将动态获取表的接口名称。因此,我需要在接口中迭代这些属性并从中获取一个数组。

我怎样才能达到这个结果?

原文由 Tushar Shukla 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

TypeScript 2.3 开始(或者我应该说 2.4 ,因为在 2.3 中,此功能包含 一个 已在 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 命令。请求插件支持自定义转换器时 出现问题

原文由 kimamula 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题