【发布时间】:2016-09-08 03:00:59
【问题描述】:
就返回的类型而言,以下代码是正确的,因为then 总是返回承诺数组。
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>>,但这更像是一种变通方法,而不是正确的解决方案。
这个怎么写?
【问题讨论】: