如何将类型alias的所有属性获取到数组中



给定此类型别名:

export type RequestObject = {
user_id: number,
address: string,
user_type: number,
points: number,
};

我想要它所有属性的数组,例如:

['user_id','address','user_type','points']

有什么选择吗?我已经在谷歌上搜索过了,但我只能使用以下包获得接口

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

由于类型擦除,您无法轻松完成此操作

Typescript类型仅在编译时存在。它们不存在于已编译的javascript中。因此,您无法用编译时数据(如RequestObject类型别名(填充数组(运行时实体(,除非您执行一些复杂的操作,如找到的库。

解决方法

  1. 自己编写一些与您找到的库类似的代码
  2. 找到一个使用类型别名(如RequestObject(的不同库
  3. 创建一个与您的类型别名等效的接口,并将其传递给您找到的库,例如:
import { keys } from 'ts-transformer-keys';
export type RequestObject = {
user_id: number,
address: string,
user_type: number,
points: number,
}
interface IRequestObject extends RequestObject {}
const keysOfProps = keys<IRequestObject>();
console.log(keysOfProps); // ['user_id', 'address', 'user_type', 'points']

最新更新