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"”的参数。

猜你喜欢

转载自blog.csdn.net/u011200562/article/details/130250751
今日推荐