【发布时间】:2019-11-14 00:25:35
【问题描述】:
我有两个接口,User 和 BankUser。 BankUser的接口大致如下:
interface BankUser extends User {
banks: { [bank_id: string]: string};
isSuper: boolean;
}
我有一个函数,我要传入User 或BankUser,我希望从中得到BankUser。如果是用户,则应为BankUser 添加默认属性。
const cleanedUser = (user: User | BankUser): BankUser => {
const {uid, displayName, email, phoneNumber, photoURL, banks = {}, isSuper = false} = user;
return {uid, displayName, email, phoneNumber, photoURL, banks, isSuper} as BankUser;
}
我收到两个 TS2339 错误,表明银行和 isSuper 在类型 User | BankUser 上不存在,例如:
TS2339:
User | BankUser类型上不存在属性“银行”
如果我在函数上方添加// @ts-ignore,它会起作用,我可以发送User 或BankUser,但我尽量避免这种情况。有没有更好的方法来处理这个问题?
【问题讨论】:
-
您的错误是指
IUser的类型,但此代码中未定义此类型。 -
@kaya3 哎呀。谢谢你抓住那个。实际使用的命名约定有点复杂,所以我在示例中对其进行了更改以使其更加清晰。现在已经解决了。
标签: typescript