以下的代码在返回类型方面是正确的,因为then
总是返回promise数组。
Promise.resolve(['one', 'two'])
.then( arr =>
{
if( arr.indexOf('three') === -1 )
return Promise.reject( new Error('Where is three?') );
return Promise.resolve(arr);
})
.catch( err =>
{
console.log(err); // Error: where is three?
})
TypeScript抛出错误:
无法从使用中推断出类型参数'TResult'的类型参数。考虑显式指定类型参数。 类型参数候选项“void”不是有效的类型参数,因为它不是候选项“string []”的超类型。
但实际情况是,then
永远不会返回void
。
我可以明确指定类型.then<Promise<any>>
,但这更像是一种解决方法,而不是正确的解决方案。
如何正确编写?
then
处理程序内返回Promise.resolve()
和/或Promise.reject()
。OP有一个合理的问题,就是为什么TypeScript对此感到不满意。 - user663031