// 泛型: 动态类型
// 用泛型整合下面2个函数为一个函数
function A(a:number,b:number):number[] {
return [a,b]
}
function B(a:string,b:string):string[] {
return [a,b]
}
// T是自定义的,只是常用T,用其他代替也行,使用泛型去代替未确定的类型
function C<T>(a:T,b:T):Array<T> {
return [a,b]
}
// 此时调用时会自动推断该类型,传入不同类型都可以
C('1','4')
C(1,4)
// 可以使用多个泛型
function D<T,K>(a:T,b:K):Array<T | K> {
return [a,b]
}
D(1,'5')
// 可以传入默认值
function Y<T = number,K = boolean>(a:T,b:K):Array<T | K> {
return [a,b]
}
//Y() // 此时会推断参数为number和boolean
Y('222',{}) // 传入其他类型会被覆盖
// type使用泛型
type E<T> = string | number | T
const G:E<boolean> = true // 此时type E = string | number | boolean
// interface使用泛型
interface H<T> {
msg: T
}
const K:H<string> = {
msg: '通过了'
}