自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TS 4.7 版本新特性,讓 Infer 更簡(jiǎn)單

開發(fā) 前端
你了解 TypeScript infer 的相關(guān)知識(shí)點(diǎn)么?你知道在條件類型中,如何利用 infer 實(shí)現(xiàn)類型推斷么?

本文阿寶哥將介紹 TypeScript 4.7 版本引入的一個(gè)與 infer 有關(guān)的新特性,該特性能夠讓 infer 類型推斷變得更加簡(jiǎn)潔。在介紹 infer 有關(guān)的新特性之前,我們先來(lái)看個(gè)例子:

type FirstIfString<T> = T extends [infer S, ...unknown[]]
? S extends string
? S
: never
: never;

圖片

在以上代碼中,F(xiàn)irstIfString 工具類型使用了 TypeScript 的條件類型、條件鏈和 infer 類型推斷。在第一個(gè)條件類型中,我們判斷類型參數(shù) T 的實(shí)際類型是否為非空的元組類型,同時(shí)使用 infer 聲明了類型變量 S,用于存儲(chǔ)模式匹配過(guò)程中,所捕獲元組類型第一個(gè)元素的類型。

而在第二個(gè)條件類型中,我們會(huì)繼續(xù)判斷類型變量 S 是否為字符串類型的子類型,若條件滿足的話,則會(huì)返回類型變量 S 所對(duì)應(yīng)的類型,否則所有條件類型的 false 分支都會(huì)返回 never 類型。

介紹完 FirstIfString 工具類型的作用之后,我們來(lái)驗(yàn)證一下它的功能:

// 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]>;

圖片

由以上結(jié)果可知,F(xiàn)irstIfString 工具類型是可以正常使用的。那么現(xiàn)在問(wèn)題來(lái)了,該工具類型內(nèi)部使用了兩個(gè)條件類型,我們能否使用一個(gè)條件類型來(lái)實(shí)現(xiàn)同樣的功能呢?答案是可以的!TypeScript 4.7 版本允許我們?yōu)?infer type 添加可選的 extends 子句,用于指定類型變量的顯式約束。

責(zé)任編輯:武曉燕 來(lái)源: 全棧修仙之路
相關(guān)推薦

2021-07-24 13:16:31

Android 代碼操作系統(tǒng)

2022-05-09 22:53:02

數(shù)組類型TS

2013-05-16 10:33:11

C#C# 5.0Async

2012-06-20 13:36:42

Surface平板

2019-04-04 14:05:20

consolejs前端

2019-07-10 10:20:36

前端用戶體驗(yàn)javascript

2009-11-04 15:44:39

ADO.NET Sql

2015-05-20 12:50:42

C#開發(fā)抽象增刪改

2024-02-27 19:22:00

cookieStorCookie事件

2020-06-16 13:22:22

AI創(chuàng)新深度學(xué)習(xí)

2010-03-23 09:54:35

好壓壓縮

2020-05-07 10:18:06

JavaScript前端技術(shù)

2009-06-18 15:51:52

SSL VPN負(fù)載均衡Array

2012-09-25 09:28:36

程序員代碼代碼整潔

2024-04-26 07:54:07

ZustandReact狀態(tài)管理庫(kù)

2015-07-17 13:27:16

MySQL 5.7

2009-12-18 13:43:07

Ruby 1.9版本

2015-07-17 13:43:09

MySQL 5.7

2015-07-17 13:45:12

MySQL 5.7

2024-01-15 00:30:04

Python 3語(yǔ)言版本
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)