我已经创建了一个自定义错误并为它设置了一个自定义消息。然后在某个地方抛出自定义错误并在其他地方捕获。我想访问我之前设置的消息,但是TypeScript告诉我error是未知类型!我怎样才能修好它?
async activeAccount(uuid: string) {
try {
const response = await ApiClient(
METHODS.GET,
"Account/approveEmail",
false,
{
uuid
}
);
} catch (error) {
this.showToastError(error.message);
}
}
不能保证catch
捕获的东西实际上是一个错误,因为throw
可以抛出任何(这就是为什么类型是unknown
,你有缩小它与检查做任何事情)。编译器会适当地警告您没有考虑以下内容:
try {
throw undefined;
} catch (err) {
console.log(err.message); // oops
}
要解决这个问题,您可以添加一个检查来确保您有一个实际的错误:
try {
...
} catch (err) {
if (err instanceof Error) {
console.log(err.message); // ok
}
}