泛型函數
泛型基本場景
輸出類型與輸入類型有關,或者兩個類型以某種方式相關聯。
// function firstElement(arr: any[]) {
// return arr[0]
// }
function firstElement<Type>(arr: Type[]): Type | undefined {
return arr[0]
}
泛型參數的限制條件
// 函數:返回兩個值較長的那個
function longest<Type extends { length: number } > (a: Type, b: Type) { // a、b 必須存在 length 屬性
return a.length > b.length ? a : b
}
使用受限值,執行類型參數
const arr = combine<string | number>([1, 2, 3], ["hello"])
編寫優秀的通用函數準則
- 可能情況下,使用類型參數本身,而不是對其進行約束
- 總是盡可能減少使用類型參數
- 如果一個類型的參數只出現在一個地方,請重新考慮你是否真的需要它