异步返回的输入与预期不同

时间:2017-12-25 23:19:58

标签: typescript

我有以下的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的类型会与异步函数返回类型的去保护类型不同:

enter image description here

正如您所期望的那样.getContent()的返回类型是Promise,因为它是异步函数:

enter image description here

但是由于我没有理解的原因,回到result变量的实际响应是预期结果还是数字?

enter image description here

任何人都可以帮助我理解数字响应的可能性来自何处?

1 个答案:

答案 0 :(得分:5)

这是因为catch块从Array.push返回一个数值。

解析api.getContent或抛出错误,但由于箭头函数返回一个数字,结果可以是IApiResponsenumber