Typescript的keyof

文章类型:TypeScript

发布者:admin

发布时间:2023-04-14

TypeScript中,keyof是一个操作符,用于获取一个类型的所有属性名称的联合类型,keyof操作符对枚举类型,返回枚举类型属性,对类操作,返回类的属性

一:用于获取某种类型的所有键,其返回类型是联合类型

type Person = {
name: string;
age: number;
email: string;
};

type PersonKeys = keyof Person; // "name" | "age" | "email"

二:配合 extends 可以约束泛型, keyof 自身得到的类型也能约束类型,进行一些安全的操作

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

const person: Person = {
name: "John",
age: 30,
email: "john@example.com",
};

const name = getProperty(person, "name"); // string 类型
const age = getProperty(person, "age"); // number 类型
const email = getProperty(person, "email"); // string 类型
const invalid = getProperty(person, "invalid"); // 编译错误,"invalid" 不是 "name" | "age" | "email" 中的一个属性名称