Typescript学习笔记(20) ----- keyof 语法的使用

keyof 语法

常用的场景:

  • 获取对象的某一属性值时
    比如:


    image.png

    当这么写时,会造成两个问题:

  • 没有类型保护,所以ts会抛出这样的一个错误
  • ts无法进行有效的类型推断。peopleName应该是一个string,但ts推断出来的却是any。

原因是因为,ts无法知道传进来的key这个变量是否是people这个类型所具有的。
可以使用之前所学的泛型结合keyof解决这一问题。
代码:

getInfo(key:T):Person[T]{
    return this.info[key]
  }

思路:

  • keyof 好比是js中遍历一个对象的属性
    代码就转换成
T extends name
相当于
type T = name
这时候设置key为name
key:T
返回值就应该是Person[name]
:person[T]

这样以来ts就能推断出获取的属性类型了。

你可能感兴趣的:(Typescript学习笔记(20) ----- keyof 语法的使用)