面试题答案
一键面试interface UserInfo {
name: string;
age: number;
email: string;
}
type NewUserType = Required<Pick<UserInfo, 'name'>> & Partial<Pick<UserInfo, 'age' | 'email'>>;
实际场景解释
- 用户信息更新场景:在用户更新个人信息时,前端提交的数据可能不包含所有字段。例如,用户只想更新自己的姓名,而年龄和邮箱保持不变。此时,后端接口接收的数据类型就可以使用这种组合类型,确保
name
字段必填,而age
和email
可选,避免因接收的数据不完整而导致错误。 - 用户注册简化流程:有些注册流程可能只要求用户必填姓名,年龄和邮箱可以后续补充。这种类型定义能准确地表达数据结构需求,在开发过程中为前端和后端提供清晰的数据校验规则。