The following code is correct in terms of the type that is returned, because then always return the promise array.
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 throw error:
The type argument for type parameter 'TResult' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'void' is not a valid type argument because it is not a supertype of candidate 'string[]'.
But in reality, then never will return void.
I can explicitly specify type .then<Promise<any>>, but it's more like a workaround, not the right solution.
How to write this right?