// 在TypeScript中,`keyof`是一个操作符,
// 它允许你从一个类型中提取所有的可枚举属性名,并将它们组成一个联合类型。
// 例如,假设你有这样一个类型:
type Person = {
firstName: string;
lastName: string;
age: number;
};
// 那么,`keyof Person`将会返回`"firstName" | "lastName" | "age"`的联合类型,
// 因为这些都是`Person`类型的可枚举属性名。
// 你可以使用`keyof`操作符来进行一些有用的检查,例如确保某个变量只包含一个特定类型中的某个属性:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
let person: Person = { firstName: "Alice", lastName: "Smith", age: 30 };
console.log(getProperty(person, "firstName")); // 输出: 'Alice'
console.log(getProperty(person, "middleName")); // 报错,因为'Person'类型中没有'middleName'属性
// 在这个例子中,`getProperty`函数接受一个对象和一个属性名,并返回那个属性的值。
// 但是,如果传递的属性名不在指定的对象类型中,则会抛出错误。