type FirstIfString= T extends [infer S, ...unknown[]]
? S extends string
? S
: never
: never;
在以上代码中,FirstIfString 工具类型使用了 TypeScript 的条件类型、条件链和 infer 类型推断。在第一个条件类型中,我们判断类型参数 T 的实际类型是否为非空的元组类型,同时使用 infer 声明了类型变量 S,用于存储模式匹配过程中,所捕获元组类型第一个元素的类型。
10年积累的成都网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有合水免费网站建设让你可以放心的选择与我们合作。
而在第二个条件类型中,我们会继续判断类型变量 S 是否为字符串类型的子类型,若条件满足的话,则会返回类型变量 S 所对应的类型,否则所有条件类型的 false 分支都会返回 never 类型。
介绍完 FirstIfString 工具类型的作用之后,我们来验证一下它的功能:
// string
type A = FirstIfString<[string, number, number]>;
// "hello"
type B = FirstIfString<["hello", number, number]>;
// "hello" | "world"
type C = FirstIfString<["hello" | "world", boolean]>;
// never
type D = FirstIfString<[boolean, number, string]>;
由以上结果可知,FirstIfString 工具类型是可以正常使用的。那么现在问题来了,该工具类型内部使用了两个条件类型,我们能否使用一个条件类型来实现同样的功能呢?答案是可以的!TypeScript 4.7 版本允许我们为 infer type 添加可选的 extends 子句,用于指定类型变量的显式约束。
当前名称:TS 4.7 版本新特性,让 Infer 更简单
链接分享:http://www.shufengxianlan.com/qtweb/news33/291033.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联