推荐答案
// www.javascriptcn.com code example
class GenericClass<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
getValue(): T {
return this.value;
}
setValue(value: T): void {
this.value = value;
}
}
// 使用示例
const numberClass = new GenericClass<number>(10);
console.log(numberClass.getValue()); // 输出: 10
const stringClass = new GenericClass<string>("Hello");
console.log(stringClass.getValue()); // 输出: Hello本题详细解读
泛型类的定义
泛型类(Generic Classes)是指在定义类时使用类型参数(Type Parameters),使得类中的某些成员(如属性、方法等)可以接受任意类型的参数。通过泛型类,我们可以创建可重用的组件,这些组件可以处理不同类型的数据,而不需要为每种类型都编写一个单独的类。
泛型类的用法
类型参数:在类名后面使用尖括号
<>来定义类型参数,例如<T>。这个类型参数可以在类的内部使用,表示某种类型。属性与方法:在类的属性和方法中,可以使用类型参数来指定类型。例如,
private value: T表示value属性的类型是T,getValue(): T表示getValue方法返回的类型是T。实例化:在实例化泛型类时,需要指定具体的类型参数。例如,
new GenericClass<number>(10)表示创建一个GenericClass的实例,并且T被指定为number类型。类型推断:在某些情况下,TypeScript可以自动推断出类型参数的类型,因此可以省略类型参数的显式指定。例如,
new GenericClass(10)会自动推断出T为number类型。
示例代码解析
GenericClass<T>:定义了一个泛型类,T是类型参数。private value: T:定义了一个私有属性value,类型为T。constructor(value: T):构造函数接受一个类型为T的参数,并将其赋值给value属性。getValue(): T:返回value属性的值,类型为T。setValue(value: T): void:设置value属性的值,参数类型为T。
通过泛型类,我们可以创建适用于多种类型的类实例,提高了代码的复用性和灵活性。