设计思路
- 函数设计:使用泛型参数来表示不同的数据类型,这样同一个函数可以处理多种类型的数据。
- 类设计:同样使用泛型参数,使类能够适用于不同的数据类型,同时利用接口约束泛型的行为,以保证类型安全。
- 多态性实现:通过泛型,不同类型的数据在调用相同函数或类方法时,会根据实际类型进行相应的处理,实现多态性。
代码实现
// 1. 泛型函数示例
function identity<T>(arg: T): T {
return arg;
}
// 2. 泛型类示例
class GenericBox<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
getValue(): T {
return this.value;
}
}
// 3. 带有类型约束的泛型函数
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}
// 使用示例
let result1 = identity<string>("Hello");
let box = new GenericBox<number>(42);
let result2 = box.getValue();
let result3 = loggingIdentity([1, 2, 3]);