一织堂、TypeScript 泛型的理解
1、TypeScript 中的泛型
在TypeScript中徐矩,泛型是-種創(chuàng)建可復(fù)用代碼組件的工具粮宛。
這種組件不只熊被一種類(lèi)型使甩窥淆。而是能被多種類(lèi)型復(fù)用e類(lèi)似于參數(shù)的作用。泛型是-種用以增強(qiáng)類(lèi)巍杈、(classes) 心類(lèi)型(tyes)和接
日Sinterfaces) 能力的非秤欠梗可靠的手段。這樣筷畦。我們開(kāi)發(fā)者就可以輕松地將那些可復(fù)用的代碼想件词裤、適用于各種輸入e然而不要把
TypeScript中的泛型錯(cuò)當(dāng)成any類(lèi)型來(lái)使用-
-你會(huì)在后面看到這兩者的不同。
類(lèi)似C#和Java這種語(yǔ)言鳖宾,在它們的工具箱里吼砂,泛型是創(chuàng)建可復(fù)用代碼組件的主要手段之- -。即鼎文,用于創(chuàng)建一個(gè)適用于 多種類(lèi)型的代碼組
件渔肩。這允許用戶(hù)以他們自己的類(lèi)使用該泛型組件。
2拇惋、泛型的定義
使用<T>來(lái)定義類(lèi)型周偎,<T>中的T可以是U也可以是其他合法的字母抹剩,建議大寫(xiě)。泛型可以理解為不確定單獨(dú)類(lèi)型蓉坎,函數(shù)中使用泛型澳眷,可以約
束函數(shù)的參數(shù)和返回值類(lèi)型相同。
A蛉艾、定義:
function函數(shù)名<T>(形參名:T):T{
函數(shù)體語(yǔ)句;
return返回值; //返回值類(lèi)型是T
}
B钳踊、調(diào)用:
函數(shù)名<數(shù)據(jù)類(lèi)型>(參數(shù))
但是使用any類(lèi)型會(huì)導(dǎo)致這個(gè)函數(shù)可以接收任何類(lèi)型的arg參數(shù),這樣就丟失了-一些信息:傳入的類(lèi)型與返回的類(lèi)型應(yīng)該是相同的伺通。如果我們傳入一個(gè)數(shù)字箍土,我們只知道任何類(lèi)型的值都有可能被返回逢享。
解決方法:
使用類(lèi)型變量罐监,它是-種特殊的變量, 只用于表示類(lèi)型而不是值瞒爬。
function identity<T>(arg:T): T {
return arg;
給identity添加了類(lèi)型變量T弓柱。T 幫助我們捕獲用戶(hù)傳入的類(lèi)型(比如: number) ,之后我們就可以使用這個(gè)類(lèi)型侧但。
之后我們?cè)俅问褂?/p>
了T當(dāng)做返回值類(lèi)型∈缚眨現(xiàn)在我們可以知道參數(shù)類(lèi)型與返回值類(lèi)型是相同的了。這允許 我們跟蹤函數(shù)里使用的類(lèi)型的信息禀横。