日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
五個(gè)有用的TypeScriptTypeof運(yùn)算符的技巧

在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)算符的技巧
地址分享:http://www.5511xx.com/article/ccccgoh.html