React-Query mutation.error 未被识别为类型错误

React-Query mutation.error not recognized as type Error

使用 React-Query 突变时,我有一个显示错误消息的组件。但是 Typescript 无法将 mutation.error 属性 识别为类型 Error:

if (mutation.isError){
    console.log(mutation.error.message);             // Property 'message' does not exist on type 'unknown'.
    console.log((mutation.error as Error).message);  // works
}

如何通知 typescript mutation.error 确实是一个错误对象?

您必须向 useMutation 提供泛型:

useMutation<MyData, Error>

但我不会那样做。错误是未知的,因为在运行时,也可以抛出非错误对象。

我认为最简单的解决方案是执行 instanceof 检查而不是检查 isError:

if (mutation.error instanceof Error){
    console.log(mutation.error.message);
}

这将正确缩小错误类型,以便 .message 可用