Ok I finally found the correct syntax for using Promise.allSettled in typescript:
Update: Thanks to @myol I updated the code without unnecessary map:
const dummyResolve1 = Promise.resolve(1000);
const dummyResolve2 = new Promise(resolve => setTimeout(() => resolve(2000), 0));
const dummyError = Promise.reject(new Error('failed'));
const dummyPromises = [dummyResolve1, dummyResolve1, dummyError];
Promise.allSettled(dummyPromises)
.then(results => {
const allValues = (results.filter(c=>c.status === 'fulfilled') as PromiseFulfilledResult<any>[])
.map(c=>c.value);
console.log(allValues);
const failedResults =
(results.filter(c=>c.status === 'rejected') as PromiseRejectedResult[])
.map(c=>c.reason);
console.log(failedResults);
});
Old code:
Promise.allSettled([
Promise.resolve(1000),
new Promise(resolve => setTimeout(() => resolve(2000), 0)),
1500,
Promise.reject(new Error('failed'))
])
.then(values => {
let allValues = values.filter(c=>c.status === 'fulfilled').map(c=> <PromiseFulfilledResult<any>>c).map(c=>c.value);
console.log(allValues);
let failedResults = values.filter(c=>c.status === 'rejected').map(c=> <PromiseRejectedResult>c).map(c=>c.reason);
console.log(failedResults);
});