泛型在 Java 、C# 或者是其他語言中都存在筐乳,他的主要好處就是在你定義的時(shí)候不知道數(shù)據(jù)類型歌殃,你可以在使用的時(shí)候根據(jù)情況自定義這個(gè)數(shù)據(jù) 類型。
image.png
源碼
- ts
//先定義一個(gè)簡單的函數(shù)
//參數(shù)為 number 類型蝙云,返回值為 number 類型
// function Hello(num:number):number {
// return num;
// }
//上面的函數(shù)如果說是我們不確定需要傳遞的參數(shù)是什么類型的話就直接用不了了
//以之前的知識(shí)你可能會(huì)用如下的方法解決
// function Hello(arg:any):any {
// return arg;
// }
//上面的解決方法雖然可以用氓皱,但是這樣寫的話他就沒有一個(gè)明顯的規(guī)范了,容易出現(xiàn)類型的轉(zhuǎn)換錯(cuò)誤勃刨,這個(gè)一直是我們使用 TypeScript 所要避免的問題波材,所以很明顯使用 any 是不合理的
//這個(gè)時(shí)候就可以使用泛型來解決上面所出現(xiàn)的問題
//書寫格式 <T> 中間的大寫字母 T 其實(shí)也可以是其他的大寫字母, 但是我們常規(guī)的話都是使用的 T身隐,所以就直接使用的 T
//聲明一個(gè)函數(shù) 指定函數(shù)的類型為泛型
//同時(shí)要指定參數(shù)還有函數(shù)的返回值也是泛型廷区,這樣就是一個(gè)泛型的執(zhí)行方法
function Hello<T>(arg:T):T{
return arg;
}
//使用泛型
//聲明一個(gè)接收函數(shù)返回值的變量
//這里的 <string> 這個(gè)就是泛型的好處,當(dāng)你之前聲明函數(shù)時(shí)不知道數(shù)據(jù)類型贾铝,可以在使用的時(shí)候根據(jù)情況自定義這個(gè)數(shù)據(jù)類型
let output = Hello<string>('hello xiaochuan');//這里因?yàn)樵谇懊娑x了函數(shù)類型為 string 所以參數(shù)的類型也必須是 string
alert(output);//'hello xiaochuan' 這里返回的值就是傳入的參數(shù)
- HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TypeScript 泛型-認(rèn)識(shí)泛型</title>
</head>
<body>
<script type="text/javascript" src="GenericsDemo.js"></script>
</body>
</html>
- 瀏覽器效果圖
image.png