我有以下的Typescript异步功能:
async function processState(state: keyof typeof STATES, errors: any[]) {
const api = new GetStateInfo().setState(state);
const result: StateInfo = await api
.getContent()
.catch(err => errors.push({ state, err }));
return db().set<StateInfo>(`/reference/state/${state}`, result.mapped);
}
但是我很难理解为什么result
的类型会与异步函数返回类型的去保护类型不同:
正如您所期望的那样.getContent()
的返回类型是Promise,因为它是异步函数:
但是由于我没有理解的原因,回到result
变量的实际响应是预期结果还是数字?
任何人都可以帮助我理解数字响应的可能性来自何处?
答案 0 :(得分:5)
这是因为catch块从Array.push
返回一个数值。
解析api.getContent
或抛出错误,但由于箭头函数返回一个数字,结果可以是IApiResponse
或number
。