泛型(Generics)
💡 核心概念
泛型就是 “给类型加参数”,让函数或类在不同类型下都能安全复用。
🧩 类比:通用容器
想象一个 快递盒子,你可以放书、衣服或电子产品,盒子本身不管内容是什么,但能保证拿出来的时候和放进去的是同一类东西。
🔧 基本示例
function getItem<T>(item: T): T {
return item;
}
let a = getItem<string>("Hello"); // a 的类型是 string
let b = getItem<number>(123); // b 的类型是 number
这里的 <T> 就像是盒子的标签,告诉 TS “我装的是什么”。
⚙ 泛型在数组
function printArray<T>(arr: T[]) {
arr.forEach(item => console.log(item));
}
printArray<string>(["A", "B", "C"]);
printArray<number>([1, 2, 3]);
🏗 泛型在类
class Box<T> {
content: T;
constructor(value: T) {
this.content = value;
}
}
const numberBox = new Box<number>(100);
const stringBox = new Box<string>("Logan");
🌟 泛型的优势
- 类型安全:不会乱传类型。
- 可复用性高:一套代码适配多种类型。
- 智能提示:编辑器自动推断类型,减少手写类型的麻烦。
3️⃣ 总结
| 特性 | 枚举(enum) | 泛型(generics) |
|---|---|---|
| 用途 | 定义一组固定的值 | 让函数或类支持多种类型 |
| 类比 | 菜单编号 | 通用快递盒子 |
| 好处 | 代码更清晰、避免魔法数字 | 复用、安全、类型推断 |
| 难度 | 简单 | 稍微进阶 |