泛型 使用<T>来定义传入的值和输出的值相同 泛型变量T可以当作一部分来使用 对函数使用泛型 // 整体使用泛型 对函数使用泛型 function identity<T>(arg: T): T { return arg; } // 数组类型;数组每一项的值为泛型 function loggingIdentity<T>(arg: Array<T>): Array<T> { console.log(arg.length); // Array has a .length, so no more error return arg; } 对接口使用泛型 // 对接口使用泛型 interface GenericIdentityFn<T> { (arg: T): T; } function identity<T>(arg: T): T { return arg; } let myIdentity: GenericIdentityFn<number> = identity; 对类使用泛类型 class GenericNumber<T> { zeroValue: T; add: (x: T, y: T) => T; } let myGenericNumber = new GenericNumber<number>(); myGenericNumber.zeroValue = 0; myGenericNumber.add = function(x, y) { return x + y; }; 注意: 泛型类指的是实例部分的类型,所以类的静态属性不能使用这个泛型类型 泛型约束