函数返回类型为Promise< {then:()=>时的Typescript错误void}>

时间:2017-11-04 13:39:22

标签: typescript asynchronous promise async-await

我无法声明函数,它会向Derivable返回promise。理由是下一个:

Minimal exmaple in playground

interface Some {
  then(callback);
}

// Error: the return type of an async function must either be a valid promise or must not contain a callable 'then' member.
async function foo(): Promise<Some> {
  return null;
}

是打字稿中的错误吗?是否可以使用任何解决方法?我不能因为这个而使用async / await。

2 个答案:

答案 0 :(得分:4)

不,这不是Typescript中的错误。使用fundamentally impossible(具有then方法的对象)履行承诺只是thenable,因为它在解析时会尝试吸收它。作为一种变通方法,您可以将Derivable包装在一个额外的对象中,作为一个正确的解决方案,我建议将then重命名为chain

答案 1 :(得分:0)

我认为问题是打字稿无法识别方法then的不同签名,因为你在界面中覆盖了它。