Partial Pick 与 Omit
工具类型是"类型的函数":传一个类型进去,返回一个新类型。Partial<T> 把所有属性变可选——表单编辑、分步填写场景的标准做法。
Pick<T, K> 只挑指定键,Omit<T, K> 反过来排除指定键。三者都基于映射类型 { [P in keyof T]: T[P] },理解映射类型就能自己造工具。
- Partial
:全部属性变可选,常用于更新/表单场景 - Pick
:只保留列出的键 - Omit
:排除列出的键(Pick 的反面)
TS
interface User { id: number; name: string; email: string }
// Partial:全可选,适合更新接口
type UserUpdate = Partial<User>;
const patch: UserUpdate = { name: '新名字' }; // 只改一个字段也合法
// Pick:挑几个字段
type UserBrief = Pick<User, 'id' | 'name'>;
const brief: UserBrief = { id: 1, name: '小明' };
// Omit:排除几个字段
type UserPublic = Omit<User, 'email'>;
const pub: UserPublic = { id: 1, name: '小明' };
// 底层实现其实只有一行映射类型
type MyPartial<T> = { [K in keyof T]?: T[K] };JS
// 工具类型纯粹是编译期概念,运行时零痕迹 // 模拟 Partial 的用途:部分字段更新 function updateUser(patch) { const user = { id: 1, name: '旧名字', email: 'a@b.com' }; return { ...user, ...patch }; } console.log(updateUser({ name: '新名字' })); // { id: 1, name: '新名字', email: 'a@b.com' }
本节要点Partial/Pick/Omit 是三个最常用工具类型,底层都是映射类型。




