我有UserModel:
id: number;
email: string;
avatar: string|object;
User.avatar作为字符串化的json存储在数据库中。然后,我有了下一个功能:
function (user: IUserModel) {
if (typeof user.avatar === 'string') {
user.avatar = JSON.parse(user.avatar);
}
// so, on this moment user.avatar always is object
// do sth else with user... but these operations require user.avatar to be OBJECT
// TypeScript doesn't allow to do these operations because in IUserModel avatar could be string|object
}
请告诉我TypeScript在if
user.avatar之后始终是对象
答案 0 :(得分:1)
看看类型保护器,它们会一次性检查类型并进行类型转换:https://basarat.gitbooks.io/typescript/docs/types/typeGuard.html
答案 1 :(得分:0)
在确定类型之后,可以使用断言强制类型。
if (typeof user.avatar === 'string') {
user.avatar = JSON.parse(user.avatar);
}
const avatar = JSON.parse(user.avatar) as object;
然后,您应该可以使用头像输入对象。