操作符keyof的作用是什么?

在 TypeScript 中,keyof 操作符用于获取一个类型的所有属性名组成的联合类型。它可以用来创建泛型函数或接口,用于操作对象的属性名称而不是属性值。

例如,假设我们有一个名为 Person 的接口:

interface Person {
  name: string;
  age: number;
  gender: "male" | "female";
}

如果我们想要定义一个函数,将 Person 对象中某个属性的值取出来,但是我们不想写死这个属性的名称,而是希望能够根据传入的字符串参数动态获取属性名称,那么就可以使用 keyof 操作符来定义泛型类型参数:

function getProperty(obj: T, key: K): T[K] {
  return obj[key];
}

在这个例子中,我们定义了一个泛型函数 getProperty,它接受一个对象 obj 和一个属性名 key,并返回指定属性名的属性值。通过使用 keyof T 来约束类型参数 K,我们限制了 key 参数必须是 T 类型的属性名之一。

我们可以使用这个函数来获取 Person 对象中指定属性的值:

const person: Person = {
  name: "Alice",
  age: 30,
  gender: "female"
};

getProperty(person, "name"); // "Alice"
getProperty(person, "age"); // 30
getProperty(person, "gender"); // "female"
getProperty(person, "salary"); // Error: 类型“"salary"”的参数不能赋给类型“"name" | "age" | "gender"”的参数

总之,keyof 操作符可以用来获取类型的所有属性名组成的联合类型,而在泛型函数或接口中使用 keyof 操作符可以对属性名称进行操作,从而实现更加灵活和可重用的代码。

你可能感兴趣的:(java,前端,javascript)