代码实现
// 1. 函数接受任意类型数组并返回第一个元素
function getFirst<T>(arr: T[]): T | undefined {
return arr.length > 0? arr[0] : undefined;
}
// 2. 类存储任意类型数据并提供获取和修改数据的方法
class DataStore<T> {
private data: T;
constructor(value: T) {
this.data = value;
}
get(): T {
return this.data;
}
set(newValue: T) {
this.data = newValue;
}
}
好处
- 代码结构清晰:在函数和类上分别声明泛型,明确了每个代码单元的泛型作用域。例如在
getFirst
函数中,泛型 T
仅与数组元素类型相关,而 DataStore
类中的泛型 T
仅与存储的数据类型相关,使得代码结构更清晰,每个泛型的职责一目了然。
- 复用性高:函数
getFirst
可以用于任何类型的数组,而 DataStore
类可以存储任何类型的数据,无需为不同数据类型重复编写相似的逻辑。泛型的使用极大地提高了代码的复用性,减少了冗余代码。