泛型函数
泛型基本场景
输出类型与输入类型有关,或者两个类型以某种方式相关联。
// 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"])
编写优秀的通用函数准则
- 可能情况下,使用类型参数本身,而不是对其进行约束
- 总是尽可能减少使用类型参数
- 如果一个类型的参数只出现在一个地方,请重新考虑你是否真的需要它
网友评论