Utility Types
interface User {
id: number;
name: string;
email: string;
}
// Partial — 所有属性变可选
type UserUpdate = Partial<User>;
// { id?: number; name?: string; email?: string }
// Required — 所有属性变必填
type RequiredUser = Required<User>;
// Pick — 选取部分属性
type UserPreview = Pick<User, 'id' | 'name'>;
// { id: number; name: string }
// Omit — 排除部分属性
type UserWithoutEmail = Omit<User, 'email'>;
// { id: number; name: string }
// Record — 键值映射
type RoleMap = Record<string, User[]>;
// { [key: string]: User[] }
// Readonly — 所有属性只读
type ImmutableUser = Readonly<User>;
实际应用
// API 更新函数 — 不需要传所有字段
function updateUser(id: number, data: Partial<User>) { ... }
updateUser(1, { name: 'Bob' }); // OK
updateUser(1, { email: 'bob@example.com' }); // OK
Partial 是 React 中最常用的 Utility Type,用于组件的可选 props。