打字稿通用如何使typeof对象到数组?

Typescript generic how to make typeof object-to-array?

我有这个功能

export const ObjectToArray = <T>(object: T): { key: any; value: any }[] =>
  Object.entries(object).map(o => ({ key: o[0], value: o[1] }));

我想删除 any 部分结果

我什至不知道如何开始。
请任何提示

您可以使用以下方法:

type Entries<T> = {
  [P in keyof T]: { key: P; value: T[P] };
}[keyof T];

export const objectToArray = <T>(obj: T): Entries<T>[] =>
  Object.entries(obj).map(o => ({ key: o[0] as keyof T, value: o[1] }));

Entries 泛型简单地遍历 T 的键,将每个键映射到您需要的记录,然后索引这些键以创建记录的联合。
objectToArray 函数内部需要一个类型断言,因为 Object.entries 不保留有关输入对象的键的信息以避免一些不合理的情况。