泛型T
// 泛型: 动态类型 // 用泛型整合下面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: '通过了' }