【发布时间】:2015-10-11 14:20:55
【问题描述】:
假设我有这样的类型
interface User {
name: string;
email: string;
}
还有这样的方法
updateUser(user: User) {
}
如果键入写为updateUser,则不能只传递一个名称(updateUser({name: 'Anna'} 失败),如果这是我要更新的唯一属性。
如果我在User 上将email 设为可选,这是可能的,但我不希望这样。如果有人通过了用户,他们应该能够期待该字段。
我也可以输入updateUser为
updateUser(user: {name?: string, email?: string}) {
}
它会起作用,但是当User 获得新属性时,我必须重复整个用户并更新这两个地方。
有没有办法指定 updateUser 以便它允许用户对象的某些部分,但如果有人试图传递丢失或键入错误的属性,则会失败?
【问题讨论】:
标签: typescript