【发布时间】:2016-08-20 15:26:39
【问题描述】:
假设我有一个接口:
interface IUser {
email: string;
id: number;
phone: string;
};
然后我有一个函数需要该类型的 子集(或完全匹配)。也许它会传递整个对象,使它只会传递{email: "t@g.com"}。我希望类型检查器同时允许两者。
例子:
function updateUser(user: IUser) {
// Update a "subset" of user attributes:
$http.put("/users/update", user);
}
Typescript 是否支持这种行为?我会发现它非常有用,尤其是像 Redux 这样的范例。
为了澄清,目标是:
- 避免重写接口并手动将所有属性设置为可选。
- 避免分配意外属性(例如拼写错误)。
- 避免使用命令式逻辑,例如
if语句,这会失去编译时类型检查的好处。
更新:Typescript 已宣布支持mapped types,一旦发布,它应该可以解决这个问题。
【问题讨论】:
-
不是
Partial你在找什么? -
当我问这个问题时,它们并不存在。我后来添加了一个链接,在它们被添加到 TS 之后。
标签: interface typescript