首页 > 解决方案 > 在函数的打字稿中声明承诺类型

问题描述

我在某处看到这段代码,只是好奇,为什么需要Promise在返回类型中指定?函数返回的数据不是对象吗?那是什么| null for

const getSomething = async (
  id: string
): Promise<UserData | null> => {
  try {
    const { data } = await axios.get(
      `${API}/user?id=${id}`
    );
    return data;
  } catch (err) {
    if (err.response) {
      return err.response.data;
    }
    return null;
  }
};

标签: javascripttypescript

解决方案


异步函数总是返回 Promises - 这样,异步awaits 可以在函数内部等待,结果可以在函数外部使用。

在这里,getSomething尝试从 axios 调用中检索数据。如果调用成功,则只返回数据:

return data;

但如果调用不成功,它将返回以下内容之一:

if (err.response) {
  return err.response.data;
}
return null;

如果axios调用抛出,并且没有err.response属性,那么null将被返回。如果您遗漏了| null,则getSomething无法正确键入该函数。


推荐阅读