我有一个函数可以返回Person类型或Error类型的对象。 如果不是错误,我想有条件地读取返回对象中的键值。
下面的代码片段的最后一行给出了错误:
类型“人|姓名”中不存在属性“名字”错误”
可以看到错误at this link。
interface Person {
firstName: string;
lastName: string;
}
function greeter(person: Person): Person | Error {
if (person.firstName === 'Malcolm') {
return new Error('This firstName is not allowed');
}
return {
firstName: person.firstName,
lastName: person.lastName,
};
}
const x = greeter({
firstName: "Malcolm",
lastName: "Reynolds",
});
const { firstName, lastName } = x;
在某些情况下,我必须返回错误。 无法跳过。
谢谢!
答案 0 :(得分:0)
首先,我建议您将greeter()
包装在try ... catch
块中以处理错误。
如果仍然要这样做,可以执行以下操作。
const val = greeter({
firstName: "Malcolm",
lastName: "Reynolds",
})
if (typeof val == Person) {
const x = val as Person;
const {firstName, lastName} = x;
}
在这里您可以检查结果类型并相应地执行操作。