← 返回随记
📚学习·

TypeScript 高级类型体操入门

TypeScript前端

从 utility types 开始

TypeScript 的 utility types 是真正提升开发体验的利器。Partial<T>Required<T>Pick<T, K>Omit<T, K> 这些内置类型看似简单,但组合起来能解决大部分日常需求。

比如权限系统里,你从后端拿到完整的 User 对象,但注册表单只需要用户名和密码。用 Pick<User, 'username' | 'password'> 一行搞定,不需要手动维护两套类型定义。这种"派生类型"的思维方式,用习惯了就回不去了。

infer 关键字

infer 是条件类型里的一个特殊关键字,用来在类型推导中"提取"某个位置的类型。最经典的例子是实现一个 ReturnType<T>

这个 infer R 的意思是:在 extends 的匹配过程中,如果 T 确实是 (...args: any[]) => infer R 的模式,就把返回值的类型捕捉到 R 里。初看有点绕,但理解之后会发现这个模式可以套用到各种场景——提取 Promise 的 resolve 类型、提取数组的元素类型、提取函数的参数类型。