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