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

keyof 语法

常用的场景:

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


    image.png

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

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

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

getInfo<T extends keyof Person>(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就能推断出获取的属性类型了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容