如何处理打字稿中的错误返回类型?

时间:2020-08-25 19:42:11

标签: javascript typescript

我有一个函数可以返回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;

在某些情况下,我必须返回错误。 无法跳过。

谢谢!

1 个答案:

答案 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;
}

在这里您可以检查结果类型并相应地执行操作。

相关问题