最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一文章說清楚,TypeScript 的泛型

2023-03-24 17:55 作者:千鋒前端  | 我要投稿


●?泛型( generic ) : 先來看一下百度給出的中文解釋

●?這一章我們就來學(xué)習(xí)一下什么是 TS 內(nèi)的泛型

泛型

●?廢話不多說, 直接上例子


初識泛型

●?一個函數(shù), 需要參數(shù)是 number 數(shù)據(jù)類型, 返回值也是 number 數(shù)據(jù)類型

●?又一個函數(shù), 需要參數(shù)是 string 類型, 返回值也是 string 數(shù)據(jù)類型

●?我們發(fā)現(xiàn), 我們給函數(shù)的參數(shù)和返回值都進(jìn)行了限制

○?假設(shè), 如果兩段代碼的業(yè)務(wù)邏輯一樣

○?我們可以不可把兩個函數(shù)寫成一個

○?需求 : 我傳遞的是 數(shù)字, 返回值就是數(shù)字, 傳遞的是 字符串, 返回值就是 字符串

●? 思考過后, 我們想到可以用 或( | )

○?看起來不錯

○?但是不能完全滿足我們的需求

■?參數(shù) number 返回值 number

■?參數(shù) number 返回值 string

■?參數(shù) string 返回值 number

■?參數(shù) string 返回值 string

○?以上四種情況都是可以的

○?和我們預(yù)期的需求不一樣

●?我也可以寫成 any 類型不就好了

○?這樣一來, 好像對參數(shù)和返回值的限制又都沒有了

○?那么 TS 的意義好像不大了

●?難道說用了 TS 以后, 我們的代碼反而不靈活了嗎 ?

●?來看下面一段代碼


○?這個玩意看起來怪怪的, 感覺認(rèn)識但又不完全認(rèn)識

○?這里函數(shù)名后面的 "<T>" 表示給該函數(shù)定義了一個泛型, 就是預(yù)設(shè)了一個類型限制

○?將來你調(diào)用這個函數(shù)的時候, 來傳遞一個類型對函數(shù)進(jìn)行約束

○?在來思考我們一開始的需求, 其實(shí)主要就是取決于調(diào)用的時候

●?泛型, 其實(shí)就是在定義階段不預(yù)先指定具體類型, 只是留下一個空位或者預(yù)設(shè)位置, 當(dāng)你使用的時候在決定使用什么具體的數(shù)據(jù)類型填充


泛型用法

1.? 函數(shù)泛型

○?就是利用泛型限定函數(shù)的參數(shù)和返回值

○?也可以設(shè)置多個泛型標(biāo)識符

○?泛型標(biāo)識符可以設(shè)置一個, 也可以設(shè)置多個, 用哪個字母無所謂


2.? 接口泛型

○?在定義接口的時候, 也可以使用泛型

○?這樣看起來, 泛型是不是非常方便呢

○?同樣, 也可以設(shè)置一個, 也可以設(shè)置多個

3.? 類泛型

○?在定義類的時候, 我們也可以加入一些泛型限制一些內(nèi)容

斷言

●?斷言是一個非常有意思的小玩意, 有的時候可以在我無助的時候給我?guī)硪唤z希望

●?我一直覺得斷言就是 "奧特曼"

●?看一個例子

○?在正常不過的一段代碼了, 這個有啥的

○?寫完我們才發(fā)現(xiàn)

●?為什么 ? 為什么 ?

●?會不會是因?yàn)槲叶x ele 變量的時候, 沒有限制類型呢

●?這回下面好了, 上面又出問題了

●?解釋一下吧

○?其實(shí)是因?yàn)? 我們獲取元素這個操作, 是有可能獲取不到的

○?當(dāng)我們獲取不到的時候就是 null

○?就不是 HTMLDivElement 這個類型了

○?所以在哪個地方限制好以后, 都會出現(xiàn)問題的

●?怎么辦呢, 這個時候, 就可以使用斷言了

○?斷言其實(shí)就是我主觀給他強(qiáng)制定義一個類型, 這樣就不會出現(xiàn)問題了

○?這里我就強(qiáng)制把 ele 元素斷定為 HTMLDivElement 類型, 那么就不會出現(xiàn)問題了

●?其實(shí)在很多時候, 我們不確定, 或者拿不準(zhǔn)的時候, 我們都可以使用斷言來解決問題

○?先不讓他報錯, O(∩_∩)O~

○?剩下的后面再說

一文章說清楚,TypeScript 的泛型的評論 (共 條)

分享到微博請遵守國家法律
乌兰察布市| 永吉县| 旬邑县| 镇原县| 衡山县| 广安市| 西华县| 高密市| 濮阳县| 府谷县| 惠州市| 富平县| 郓城县| 巴彦淖尔市| 紫阳县| 资溪县| 阿克陶县| 东山县| 抚远县| 朔州市| 武清区| 淮南市| 莒南县| 绥化市| 团风县| 华安县| 四平市| 务川| 阿拉善左旗| 郓城县| 广南县| 桃园县| 恩平市| 敖汉旗| 灵宝市| 乌拉特后旗| 莱西市| 望谟县| 林甸县| 沽源县| 枞阳县|