新聞中心
type FirstIfString= T extends [infer S, ...unknown[]]
? S extends string
? S
: never
: never;
在以上代碼中,F(xiàn)irstIfString 工具類型使用了 TypeScript 的條件類型、條件鏈和 infer 類型推斷。在第一個條件類型中,我們判斷類型參數(shù) T 的實(shí)際類型是否為非空的元組類型,同時使用 infer 聲明了類型變量 S,用于存儲模式匹配過程中,所捕獲元組類型第一個元素的類型。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有合水免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
而在第二個條件類型中,我們會繼續(xù)判斷類型變量 S 是否為字符串類型的子類型,若條件滿足的話,則會返回類型變量 S 所對應(yīng)的類型,否則所有條件類型的 false 分支都會返回 never 類型。
介紹完 FirstIfString 工具類型的作用之后,我們來驗(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)在問題來了,該工具類型內(nèi)部使用了兩個條件類型,我們能否使用一個條件類型來實(shí)現(xiàn)同樣的功能呢?答案是可以的!TypeScript 4.7 版本允許我們?yōu)?infer type 添加可選的 extends 子句,用于指定類型變量的顯式約束。
標(biāo)題名稱:TS 4.7 版本新特性,讓 Infer 更簡單
本文網(wǎng)址:http://www.dlmjj.cn/article/dhhsdhi.html


咨詢
建站咨詢
