如何访问打字稿类型键?

How to access typescript type keys?

有一个后续任务,我完全不明白如何完成它。

我有 TypeScript 类型。它是一个带有枚举键的对象。我想制作一个通用函数来过滤由此类对象组成的数组。

在下面的函数中,oldArray 是要过滤的对象数组,keyOldArray 是 TObject 类型的键之一。我知道我需要在两个不同的地方使用这个函数,并且将使用的两个键是名称和描述。我如何为 TypeScript 指定它?提前谢谢大家!

type TObject = {
  id: string;
  description: string;
  name: string;
  tob: string;
};

const arrayFilter = (oldArray: TObject[], keyOldArray: ???) => {
  return oldArray.filter((item) => item.keyOldArray === somethingConst);
};

您可以使用 typescript 的 keyof 运算符:https://www.typescriptlang.org/docs/handbook/2/keyof-types.html

您似乎正在尝试根据 keyOldArray 的索引进行过滤,因此您还必须从过滤器回调中提取索引。

const arrayFilter = (oldArray: TObject[], keyOldArray: (keyof TObject)[]) => {
  return oldArray.filter((item, index) => item[keyOldArray[index]] === somethingConst);
};