设计泛型的关键⽬的是在成员之间提供有意义的约束,这些成员可以是:类的实例成员、类的⽅法、函
数参数和函数返回值。
泛型(Generics)是允许同⼀个函数接受不同类型参数的⼀种模板。
相⽐于使⽤ any 类型,使⽤泛型来创建可复⽤的组件要更好,因为泛型会保留参数类型。
**


console.log(identity<Number,String>(68, 'hello')); // 为类型变量显式设定值==== 等价于console.log(identity(68, 'hello'));// 省略尖括号,利用编译器自动选择这些类型// 编译器⾜够聪明,能够知道我们的参数类型,并将它们赋值给 T 和 U,不需要开发⼈员显式指定它们
为什么需要泛型?
==>
比如定义一个函数,入参为number,但是现在想把这个函数扩展为适合任一类型的
如果把入参改为any就会出去校验的功能,此时泛型T就适合登场了
泛型接口
interface GenericIdentityFn<T> {(arg: T): T}
泛型类
class GenericNumber<T> {zeroValue: T;add: (x: T, y: T) => T;}let myGenericNumber = new GenericNumber<number>();myGenericNumber.zeroValue = 0;myGenericNumber.add = (x, y) => x + y;
