> 文章列表 > typescript的keyof的用法

typescript的keyof的用法

typescript的keyof的用法

第一种:与接口一起用,返回联合类型


interface Person {name: string;age: number;location: string;}type K1=keyof Person; // "name" | "age" | "gender"
let a:K1='name'

第二种:与typeof一起用,可以返回对象key的联合类型,也可以和

const TIME_TYPE = {FIXED_TIME_RANGE: 'FIXED_TIME_RANGE',DYNAMIC_TIME_RANGE: 'DYNAMIC_TIME_RANGE',};
let a:keyof typeof TIME_TYPE  //'FIXED_TIME_RANGE'|'DYNAMIC_TIME_RANGE'

第三种:与类一起使用

class Person {name: string = "Semlinker";getInfo(){console.log(this.name)}}let sname: keyof Person=‘getInfo’

如果把getInfo写成getInfo1,则会 报下面的错误 

第四种:keyof也支持基本数据类型,如下

 

第五种:在泛型约束中使用类型参数

你可以声明一个类型参数,且它被另一个类型参数所约束。 比如,现在我们想要用属性名从对象里获取这个属性。 并且我们想要确保这个属性存在于对象obj上,因此我们需要在这两个类型之间使用约束。

function getProperty<T, K extends keyof T>(obj: T, key: K) {return obj[key];
}let x = { a: 1, b: 2, c: 3, d: 4 };getProperty(x, "a"); // okay
getProperty(x, "m"); //类型“"m"”的参数不能赋给类型“"a" | "b" | "c" | "d"”的参数。