定义的时候先不明确类型用<T>站位,使用的时候明确类型
🌰
//不会泛型
function fx(val1: number, val2: number): Array<number> {
return [val1, val2]
}
fx(1, 2)
function fx1(val1: string, val2: string): Array<string> {
return [val1, val2]
}
fx1('a', 'b')
//会泛型
function add6<T>(val1: T, val2: T): Array<T> {
return [val1, val2]
}
add6<number | string>(1, '3')
add6('1', '3')
多个泛型
function add6<T, U>(val1: T, val2: U): Array<T | U> {
return [val1, val2]
}
add6(1, '3')
泛型约束
interface Y {
length: 2
}
function col<T extends Y>(val: T): number {
return val.length
}
col(12)