keyof T,索引類型操作符炊汹。對于任何類型T勘畔,keyof T的結(jié)果為T上已知的公共屬性名的聯(lián)合。
type Person = {
name: string;
age: number;
sex: string;
};
type Test = keyof Person;
// Test: "name" | "age" | "sex"
例子:定義一個get方法獲取對象data的屬性值
const data = {
a: 1,
b: 2,
c: 3,
};
// 普通get方法(缺點(diǎn):無法確定返回類型口糕,無法對key做約束)
function get(obj: object, key: string) {
return obj[key];
}
// 利用keyof約束實(shí)現(xiàn)get方法
function get<T extends object, K extends keyof T>(obj: T, key: K): T[K]{
return obj[key];
}
get(data, 'a'); // 因?yàn)樽隽祟愋图s束,第二個參數(shù)只能傳入a磕蛇,b景描,c 否則報(bào)錯