1.泛型
在定義函數或者接口或者類的時候,
不能預先確定要使用的數據類型
而是在使用函數、接口、或者類的時候才能夠確定數據類型
這個時候我們就需要使用的是泛型
2.功能描述
我們需要實現一個方法,方法中有兩個參數,
第一參數表示的是傳入的內容值,第二個參數表示的數組的個數(長度)
根據內容值產生對應個數,然后存放在數組中,最后返回來
3.分析上述功能
由於傳入的內容值可能是字符串,也有可能是數字,也有可能是布爾類型的;
只有在傳遞的時候我們才知道數據的類型
這個時候我們就需要使用泛型<T>
4.實現上述功能
function getArr<T>(cont:T, len:number) :T[]{
// const arr:T[]=[] //這是一個泛型數組 或者這樣寫
const arr: Array<T> = []; //泛型必須要有一個初始值
for (let i = 0; i < len;i++) {
arr.push(cont)
}
return arr
}
const arr1 = getArr<number>(11.1, 3);
console.log(arr1)
5.簡單說明上述代碼
function getArr<T> 表示該函數中的類型值是不確定的,
只有在傳遞的時候才知道,因此使用了泛型。
cont:T 內容值是泛型
function getArr<T>(cont:T, len:number) :T[]{ }
返回來的是一個數組泛型,數組中值類型不確定
const arr: Array<T> = []; 和 const arr:T[]=[]
聲明一個數組泛型,必須給一個初始值。【重要】
const arr1 = getArr<number>(11.1, 3);
傳遞的類型值是數字
6.函數中有多個泛型的參數
// 多個泛型參數的函數:函數中有多個泛型的參數
function getMsg<K, T>(cont1:K, cont2:T):[K,T] {
return [cont1,cont2]
}
const arr = getMsg<string, number>('哈哈', 2);
7.簡單說明一下上述的代碼
由於第一個類型的值和第二個類型的值都是不確定的,
所以有了泛型
function getMsg<K, T>(cont1:K, cont2:T):[K,T] { }
在使用的時候const arr = getMsg<string, number>('哈哈', 2);
我們的第一個值是字符串,第二個值是數字