Typescript

TS中keyof的作用以及应用

2021-03-31  本文已影响0人  莲花怪兽

官方定义:keyof该操作符可以用于获取某种类型的所有键,其返回类型是联合类型(keyof的应用多第三方库的源码中常见)

function prop<T extends object, K extends keyof  T>(obj:T, key:K){
    return obj[key];
}
翻译上面代码:

其中使用了TS泛型和泛型约束。首先定义了T类型并使用extends关键字继承object类型的子类型,然后使用keyof操作符获取T类型的所有键,它的返回 类型是联合 类型,最后利用extends关键字约束 K类型必须为keyof T联合类型的子类型。

下面举例说明:
interface Cass {
    age: number;
    myName: string;
};
// 或使用下面这种方式定义
// type Xiaoguaishou= {
//     age: number;
//     myName: string;
// };
// 关于interface和type的区别,请查阅别的文章 
const person: Cass = {
    age: 6,
    myName: "xiaoguaishou",
}

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

// 下面这种写法和上面的写法在实际使用中的区别
// 1.输出的结果都是一致
// 2.上面的方式在编码过程就能知道输入的类型是否正确,下面这种方式需要在运行之后 
// function prop(obj:Xiaoguaishou, key:string){
//     return obj[key];
// }

const age = prop(person, "age");
const myName = prop(person, "myName");
console.log('age====', age);
console.log('myName===', myName);
上一篇 下一篇

猜你喜欢

热点阅读