我想从这个 catch 块中删除任何内容,下面是我的代码

i want to remove any from this catch block , below is my code

提问人:Page MTR 提问时间:8/1/2023 最后编辑:Lenka ŠimečkováPage MTR 更新时间:8/1/2023 访问量:41

问:

const apiCallingFunction = async (data: any) =\> {
  try {
    let response = await axiosPost("/api", { ...data });
    return response;
  } catch (err: any) {
    return err.response;
  }
};

我想从捕获块中删除任何内容。

reactjs typescript 错误处理 try-catch

评论


答:

0赞 Harshit Vadhera 8/1/2023 #1
import { AxiosError } from "axios";

const apiCallingFunction = async (data: any) => {
  try {
  let response = await axiosPost("/api", { ...data });
  return response;
  } catch (err: unknown) {
   return (err as AxiosError).response;
  }
 };

Axios 具有称为 AxiosError 的错误内置类型

评论

0赞 Benjamin Rae 8/1/2023
你试过编译该代码吗?这打破了 ts(1196)Catch clause variable type annotation must be 'any' or 'unknown' if specified.
0赞 Harshit Vadhera 8/1/2023
对不起,我的坏东西已经更新了代码
0赞 ngtrthinh 8/1/2023 #2

我不认为“从捕获块中删除”是解决这个问题的好做法,因为进入捕获块的任何内容都应该是意外错误,应该输入为 .作为参考,这里在 Typescript 的官方 github 中讨论了这种做法。anyunknown

如果您使用的是 Typescript >4.4,我建议您只保留 catch 块而不添加类型(在此 PR 中解释catch(err) { // some code })