typescript - TypeScript:不确定我是否正确输入了这个返回承诺的函数
问题描述
我有一个 util 函数,可以在端点获取资源列表。我想正确输入这个函数。
type item = {
id: number
name: string
}
export default function fetchItems(): Promise<item[]> {
return fetch(ENDPOINT).then(async (response) => {
if (response.ok) {
const json = await response.json()
return json
} else {
return Promise.reject(new Error('Unknown Error'))
}
})
}
现在这个函数没有类型错误,但我想知道对于返回类型,
Promise<item[]>
我是否应该添加一个也包含错误的联合类型,因为它可以拒绝错误,Promise<item[] | Error>
或者当前版本很好?
解决方案
由于可能的 Promise 拒绝原因,TypeScript 不会跟踪类型。(同样,TypeScript 不会跟踪普通同步try
/catch
错误的类型)。如果你在 TypeScript 中有一个 Promise,你所能做的就是表示解析值的类型;拒绝值不是(也不能)被输入。
例如:
const prom = Promise.reject('foo');
给出一个Promise<never>
.
您当前的实现很好;就'Unknown Error'
TS 而言,拒绝在类型系统中的任何地方都没有。
推荐阅读
- c - 为什么 malloc() 分配的字节数比它应该分配的多 2 个字节?
- bash - SED 替换多次出现的字符
- powerbi - 按组 PowerBI 获取聚合的聚合
- python - 如何从 Python 中的 ThreadPoolExecutor 进程返回列表
- python - psycopg2 copy_to 表的一部分
- apache-spark - 如何正确触发 partitionBy/bucketBy?
- python - 获取 N 个向量和一个参考数组之间的差异
- javascript - 尝试使用 javascript 和 DOM 操作通过用户输入创建网格
- r - 使用循环替换单词并运行多行
- sql - 在给定日期范围内每天计算设备数量