新聞中心
在JavaScript中,我們可以通過typeof運(yùn)算符獲取變量的類型,那么,你知道TypeScript中使用的typeof運(yùn)算符是什么嗎? 在今天文章中,我將介紹 typeof 操作符的 5 個(gè)常見應(yīng)用場(chǎng)景,您在以后的項(xiàng)目中可能會(huì)用到。

1、獲取對(duì)象的類型
man 對(duì)象是一個(gè)常規(guī)的 JavaScript 對(duì)象,在 TypeScript 中你可以使用 type 或 interface 來定義對(duì)象的類型。 通過這種對(duì)象類型,你可以使用 TypeScript 內(nèi)置的實(shí)用類型,例如 Partial、Required、Pick 或 Readonly,來處理對(duì)象類型以滿足不同的需求。
對(duì)于簡(jiǎn)單的對(duì)象,這可能沒什么大不了的, 但對(duì)于嵌套層次較深的大型復(fù)雜對(duì)象,手動(dòng)定義它們的類型可能會(huì)讓人頭疼。 要解決這個(gè)問題,可以使用 typeof 運(yùn)算符。
type Person = typeof man;
type Address = Person["address"];
與之前手動(dòng)定義類型相比,使用 typeof 運(yùn)算符變得更加容易。 Person["address"] 是一種索引訪問類型,用于查找另一種類型(Person 類型)的特定屬性(地址)。
2. 獲取一個(gè)將所有枚舉鍵表示為字符串的類型
在 TypeScript 中,枚舉類型是被編譯成常規(guī) JavaScript 對(duì)象的特殊類型:
因此,您還可以對(duì)枚舉類型使用 typeof 運(yùn)算符。 但這通常沒有多大實(shí)際用處,在處理枚舉類型時(shí),它通常與 keyof 運(yùn)算符結(jié)合使用:
3.獲取函數(shù)對(duì)象的類型
還有一個(gè)更常見的場(chǎng)景是你的工作中使用了typeof操作符。 獲取對(duì)應(yīng)的函數(shù)類型后,可以繼續(xù)使用TypeScript內(nèi)置的ReturnType和Parameters實(shí)用類型,分別獲取函數(shù)的返回值類型和參數(shù)類型。
4.獲取類對(duì)象的類型
既然,typeof操作符可以處理函數(shù)對(duì)象,那它也可以處理Class對(duì)象? 答案是肯定的。
在上面的代碼中,createPoint 是一個(gè)創(chuàng)建 Point 類實(shí)例的工廠函數(shù)。 通過typeof運(yùn)算符,可以獲得Point類對(duì)應(yīng)的構(gòu)造簽名,從而實(shí)現(xiàn)對(duì)應(yīng)的類型驗(yàn)證。 在定義Constructor的參數(shù)類型時(shí),如果不使用typeof運(yùn)算符,會(huì)出現(xiàn)如下錯(cuò)誤信息:
5.獲得更精確的類型
在使用 typeof 運(yùn)算符時(shí),如果你想得到更精確的類型,那么,你可以將它與 TypeScript 3.4 版本引入的 const 斷言結(jié)合起來。 這是按以下方式使用的。
從上圖可以看出,在使用了const斷言之后,再使用typeof操作符,我們可以得到更精確的類型。
以上就是我今天跟你分享的5個(gè)關(guān)于TypeScript Typeof 運(yùn)算符的技巧,希望你能從中學(xué)到新的東西,如果你覺得有幫助的話,請(qǐng)點(diǎn)贊我關(guān)注我,并將這篇文章分享給你的朋友,也許能夠幫助到他哦。
網(wǎng)站名稱:五個(gè)有用的TypeScriptTypeof運(yùn)算符的技巧
標(biāo)題路徑:http://fisionsoft.com.cn/article/ccccgoh.html


咨詢
建站咨詢
