TypeScript类型体操中的关键字详解(一)

本文详细介绍了TypeScript中keyof和in关键字的使用。keyof用于获取对象类型的属性名联合类型,常与in操作符配合,限制对象属性的类型。而in操作符则用于联合类型的迭代,类似JavaScript中的for...in循环。文章还探讨了如何在类型操作中应用Partial和Required,分别用于将属性全变为可选和必选。
摘要由CSDN通过智能技术生成

TypeScript类型操作中typeofin经常放在一起使用,使用频率也很高,因此将这两个关键字放在一起介绍。

keyof

使用

keyof操作符接受一个对象类型作为参数,返回该对象属性名组成的字面量联合类型

type Dog = {
    name: string; age: number;  };
type D = keyof Dog; //type D = "name" | "age"

在一些高级类型中经常会用到keyof any, 这又是什么鬼?鼠标放上去看看就知道了
image.png

可以看到keyof any 返回的是一个联合类型:string | number | symbol,结合前文说到keyof是为了取得对象的key值组成的联合类型,那么key值有可能是什么类型呢?自然就是string | number | symbol

该关键字一般会和extends关键字结合使用,对对象属性的类型做限定,比如K extends keyof any就代表K的类型一定是keyof any所返回的联合类型的子类,如果输入不符合限定,那么自然也就不能作为对象的属性,类型系统就会报错。

因此,keyof any 表示了对象key值可能的取值类型。这一点在本文之后的一些类型实现中也会用到。

注意点

遇到索引签名时,typeof会直接返回其类型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值