Der folgende Code ist korrekt in Bezug auf den Typ, der zurückgegeben wird, da then
immer das Array Versprechen zurückgeben.TypeScript-Typdefinition für provect.reject
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?
})
Typoskript Wurffehler:
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[]'.
Aber in Wirklichkeit wird then
nie void
zurück.
Ich kann den Typ .then<Promise<any>>
explizit angeben, aber es ist eher wie ein Workaround, nicht die richtige Lösung.
Wie schreibe ich das richtig?
Als Best Practice Chaining, natürlich hast du recht, aber zur gleichen Zeit gibt es keinen Grund, warum Sie nicht 'Promise.resolve zurückkehren konnten () 'und/oder' Promise.reject() 'aus einem' then'-Handler heraus, und das OP hat eine berechtigte Frage, warum TypeScript damit unzufrieden ist. –