TypeScript type definition for promise.reject TypeScript type definition for promise.reject typescript typescript

TypeScript type definition for promise.reject


You should not return Promise.resolve and Promise.reject inside a promise chain. The resolve should be driven by simple return and reject should be driven by an explicit throw new Error.

Promise.resolve(['one', 'two']).then( arr =>{  if( arr.indexOf('three') === -1 )    throw new Error('Where is three?');  return arr;}).catch( err =>{  console.log(err); // Error: where is three?})

More

More on promise chaining https://basarat.gitbooks.io/typescript/content/docs/promise.html


Typescript is complaining about the difference in return type between your Promise.reject return value (Promise<void>) and your Promise.resolve value (Promise<string[]>).

Casting your then call as .then<Promise<void | string[]>> will let the compiler know of the union return type.

as @basarat notes, you should just throw an error instead of using Promise.reject (which will be passed to whatever catch handler is provided).