TypeScript?Typeof運(yùn)算符的5個(gè)實(shí)用技巧詳解
正文
在 JavaScript 中,你可以通過(guò)操作符獲取變量的類型typeof,那么你知道typeofTypeScript 中使用的是什么操作符嗎?在本文中,我將介紹 typeof 運(yùn)算符的 5 個(gè)常見(jiàn)應(yīng)用場(chǎng)景,你可能會(huì)在以后的項(xiàng)目中使用它們。
1.獲取對(duì)象的類型

對(duì)象是一個(gè)普通的manJavaScript 對(duì)象,在 TypeScript 中你可以使用類型或接口來(lái)定義對(duì)象的類型。使用這種對(duì)象類型,您可以使用 TypeScript 的內(nèi)置實(shí)用程序類型,例如 Partial、Required、Pick 或 Readonly,來(lái)處理對(duì)象類型以滿足不同的需求。
對(duì)于簡(jiǎn)單的對(duì)象,這可能沒(méi)什么大不了的。但是對(duì)于嵌套層次更深的大型復(fù)雜對(duì)象,手動(dòng)定義它們的類型可能會(huì)讓人麻木。要解決這個(gè)問(wèn)題,可以使用 typeof 運(yùn)算符。
type Person = typeof man; type Address = Person["address"];
與之前手動(dòng)定義類型相比,使用 typeof 運(yùn)算符變得容易得多。Person["address"]是一種索引訪問(wèn)類型,用于在另一種類型(Person 類型)上查找特定屬性(地址)。
2.獲取一個(gè)將所有枚舉鍵表示為字符串的類型
在 TypeScript 中,枚舉類型是編譯成常規(guī) JavaScript 對(duì)象的特殊類型:

因此,您也可以typeof在枚舉類型上使用運(yùn)算符。但這通常沒(méi)有太大的實(shí)際用途,在處理枚舉類型時(shí),通常與keyof運(yùn)算符結(jié)合使用:

3.獲取函數(shù)對(duì)象的類型
還有另一種更常見(jiàn)的場(chǎng)景,在您的工作中使用 typeof 運(yùn)算符。獲取到對(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ù)。通過(guò)typeof操作符可以獲取Point類對(duì)應(yīng)的構(gòu)造簽名,從而實(shí)現(xiàn)對(duì)應(yīng)的類型校驗(yàn)。在定義Constructor的參數(shù)類型時(shí),如果沒(méi)有使用typeof操作符,會(huì)出現(xiàn)如下錯(cuò)誤信息:

5. 獲得更精確的類型
在使用typeof操作符的時(shí)候,如果你想得到更精確的類型,那么你可以將它與TypeScript 3.4 版本中引入的const 斷言結(jié)合起來(lái)。 這以以下方式使用。

從上圖可以看出,在使用了const assertion之后,再使用 typeof 操作符,我們可以得到更精確的類型。
以上就是TypeScript Typeof運(yùn)算符的5個(gè)實(shí)用技巧詳解的詳細(xì)內(nèi)容,更多關(guān)于TypeScript Typeof運(yùn)算符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JS中字符問(wèn)題(二進(jìn)制/十進(jìn)制/十六進(jìn)制及ASCII碼之間的轉(zhuǎn)換)
對(duì)于js的進(jìn)制轉(zhuǎn)換的一些方法分析2008-11-11
JS清除字符串中重復(fù)值的實(shí)現(xiàn)方法
這篇文章主要介紹了JS清除字符串中重復(fù)值的實(shí)現(xiàn)方法,涉及javascript數(shù)組與字符串的遍歷、比較及數(shù)學(xué)運(yùn)算相關(guān)技巧,需要的朋友可以參考下2016-08-08
微信小程序用canvas實(shí)現(xiàn)圓形進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了微信小程序用canvas實(shí)現(xiàn)圓形進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
在 JavaScript 中保留小數(shù)點(diǎn)后兩位的方法
在 JavaScript 中,有多種方法可以保留小數(shù)點(diǎn)后兩位,本文給大家分享比較常用的方法,文末給大家介紹了實(shí)現(xiàn)數(shù)據(jù)格式化保留兩位小數(shù)的多種方法,感興趣的朋友一起看看吧2023-10-10
Javascript 學(xué)習(xí)筆記 錯(cuò)誤處理
Javascript學(xué)習(xí)筆記:錯(cuò)誤處理.2009-07-07
JS控制div跳轉(zhuǎn)到指定的位置的幾種解決方案總結(jié)
這篇文章主要介紹了JS控制div跳轉(zhuǎn)到指定的位置的幾種解決方案總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。2016-11-11
Ajax實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)實(shí)例代碼
這篇文章介紹了Ajax實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04

