【发布时间】:2021-01-29 11:35:14
【问题描述】:
我有一个使用 API 响应进行一些计算的操作,如下所示
try {
const data = await FooService.request();
someCalculation1(data as FooServiceData);
someCalculation2(data as FooServiceData);
someCalculation3(data as FooServiceData);
someCalculation4(data as FooServiceData);
} catch(err) {
console.log(err)
}
关键是这很烦人,而且不那么可读,每次都要重新输入as SomeServiceData,但我相信需要这样做,因为我的FooService.request 有这种实现
request(): Promise<SomeServiceData | Error> {
return callApi()
.then(res => {
return res as SomeServiceData;
})
.catch(err => {
console.log(err)
return Error("Some error")
})
}
由于函数可以返回每个SomeServiceData 或Error,它迫使我强制转换类型。但关键是data 永远不会是Error 类型,因为如果是,它不会是,错误将被抛出,err 将是Error 类型。但我不知道如何才能避免这种铸造。
我想把Promise格式的服务改成async/await格式,但我不相信它会改变行为。
【问题讨论】:
标签: typescript async-await es6-promise typescript-typings