泛型(Generics)
typescript
使用泛型为函数、类型和类引入可复用的类型参数,提高抽象与类型安全。
概念定义
泛型允许在声明时引入类型参数,并在使用时传入具体类型,获得灵活且安全的类型推断。
代码示例
泛型函数
JavaScript
function identity<T>(value: T): T {
return value;
}
const s = identity<string>('hi');
const n = identity(42); // 类型推断为 number泛型参数 T 可显式指定,也可由调用上下文推断。
受限泛型
JavaScript
function len<T extends { length: number }>(x: T): number {
return x.length;
}使用 extends 约束泛型参数,确保存在所需属性或结构。
使用场景
- •集合/容器类型的复用(如数组、映射表)
- •函数库/工具库中的类型安全抽象
- •组件/Hook 的输入输出约束(前端)
常见错误
- ⚠滥用 any 导致丢失泛型约束
- ⚠未添加 extends 限制导致不可用属性访问