TypeScript中的类型操作符keyof

2020-03-04  本文已影响0人  微志异
keyof T,索引类型操作符。对于任何类型T,keyof T的结果为T上已知的公共属性名的联合。
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方法(缺点:无法确定返回类型,无法对key做约束)
function get(obj: object, key: string) {
    return obj[key];
}

// 利用keyof约束实现get方法
function get<T extends object, K extends keyof T>(obj: T, key: K): T[K]{
    return obj[key];
}

get(data, 'a'); // 因为做了类型约束,第二个参数只能传入a,b,c 否则报错
上一篇 下一篇

猜你喜欢

热点阅读