编程 · NOTE 06
从一个小项目理解 TypeScript 泛型
用真实的数据转换场景,拆解约束、推断和可复用类型设计。
泛型解决什么问题
泛型的价值不是让类型看起来更高级,而是在保留信息的同时复用逻辑。函数接收什么类型,就能准确返回与它相关的类型。
function first<T>(items: T[]): T | undefined {
return items[0];
}
用约束描述最低要求
当逻辑只需要对象拥有某个字段时,可以使用 extends 表达最低能力,而不是限制成某个具体类型。
优先让 TypeScript 推断
好的泛型 API 通常不要求调用者手写大量类型参数。先设计清楚输入之间的关系,再让编译器从真实参数中完成推断。