2026 年 4 月 25 日 · 语言进阶

TypeScript 泛型:从工具函数到业务抽象

泛型不是面试题里的炫技。通过几个真实场景,看泛型如何让工具函数和业务组件变得更健壮、更可复用。

TypeScript

很多前端开发者写 TypeScript 只停留在"给变量标注类型"的层面,遇到泛型就绕着走。其实泛型是类型系统里最值得掌握的能力之一。

从 pick 一个字段说起

function pick<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

这里 K extends keyof T 约束了 key 必须是对象自身属性,返回值 T[K] 则精确对应属性类型——调用处不再需要任何断言。

约束条件的意义

泛型不是"随便一个类型"的代名词。通过 extends 施加约束,能同时拿到灵活性安全性,这是泛型区别于 any 的根本。

下次写工具函数时,试着用泛型代替 any,你会体会到类型推导带来的安心感。