981377660LMT / ts

ts学习
6 stars 1 forks source link

ts 4.7 引入的新语法:infer extends #403

Open 981377660LMT opened 1 year ago

981377660LMT commented 1 year ago

infer 的时候加上 extends 来约束推导的类型,这样推导出的就不再是 unknown 了,而是约束的类型。

981377660LMT commented 1 year ago

Typescript 支持 infer 类型,可以通过模式匹配的方式,提取一部分类型返回。

但是 infer 提取出的类型是 unknown,后面用的时候需要类似和 string 取交叉类型,或者 xxx extends string 这样的方式来转换成别的类型来用。这样比较麻烦。

所以 TS 4.7 实现了 infer extends 的语法,可以指定推导出的类型,这样简化了类型编程。

而且,infer extends 还可以用来做类型转换,比如 string 转 number、转 boolean 等。

要注意的是,4.7 的时候,推导出的只是 extends 约束的类型,比如 number、boolean,但是 4.8 就能推导出字面量类型了,比如 1、2、true、false 这种。

有了 infer extends,不但能简化类型编程,还能实现一些之前很难实现的类型转换。