操作符keyof的作用是什么?

keyof 是 TypeScript 中的一个操作符,用于获取一个类型(通常是一个对象类型或接口)的所有公共属性名组成的字符串字面量联合类型。它常常用于类型安全的属性访问和映射类型的定义。

什么时候使用 keyof

  1. 类型安全的属性访问:当你想要基于某个对象的属性进行类型安全的操作时,可以使用 keyof 来确保属性名的正确性。
  2. 映射类型:当定义映射类型(将一种类型映射为另一种类型)时,keyof 可以帮助你获取原始类型的所有属性名。

与什么搭配?

keyof 通常与 TypeScript 的对象类型、接口、和映射类型搭配使用。

如何使用?

假设我们有一个接口 Person

interface Person {  
    name: string;  
    age: number;  
    address?: string;  
}

        1.获取所有属性名

使用 keyof 获取 Person 的所有属性名:

type PersonKeys = keyof Person;  // "name" | "age" | "address"
      2.类型安全的属性访问

使用 keyof 来确保我们只在 Person 上访问存在的属性:

function getProperty(person: Person, key: keyof Person) {  
    return person[key];  // 这里是类型安全的  
}
      3.映射类型

将 Person 的每个属性值转换为只读(readonly):

type ReadonlyPerson = {  
    [K in keyof Person]: Readonly;  
};


上述代码中,K 代表 Person 的每一个属性名,然后我们使用 Person[K] 获取该属性的类型,并用 Readonly 将其转换为只读。

        4.过滤某些属性

如果你只想获取 Person 的可选属性,可以使用如下方式:

type OptionalKeys = { [K in keyof T]: T[K] extends Required[K] ? never : K }[keyof T];  
type OptionalPersonKeys = OptionalKeys;  // "address"

这里我们使用了一个映射类型和条件类型来筛选出所有可选的属性名。

你可能感兴趣的:(linux,运维,服务器)