javascript - 在函数的打字稿中声明承诺类型
问题描述
我在某处看到这段代码,只是好奇,为什么需要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;
}
};
解决方案
异步函数总是返回 Promises - 这样,异步await
s 可以在函数内部等待,结果可以在函数外部使用。
在这里,getSomething
尝试从 axios 调用中检索数据。如果调用成功,则只返回数据:
return data;
但如果调用不成功,它将返回以下内容之一:
if (err.response) {
return err.response.data;
}
return null;
如果axios
调用抛出,并且没有err.response
属性,那么null
将被返回。如果您遗漏了| null
,则getSomething
无法正确键入该函数。
推荐阅读
- reactjs - 表单提交取消,因为react js中没有连接表单。我哪里错了?
- vba - 运行我所有数据验证列表的按钮
- python-3.x - finding closest dates in DataFrame
- blockchain - 你能告诉我这个 Solidity 是如何工作的吗?
- sql - 如何在单个 sql 查询中获取 7 月份的买卖总量
- c - poll_wait() 和 wake_up_interruptible() 如何同步工作?
- php - Magento2 (PHP) using docker compose up gives 111:connection refused, taking minutes then working after code 0
- asp.net - (de) 使用 System.Text.Json 序列化流
- javascript - Reload the document to reset the game when it running
- python - How to extract table and text from docx?