Friday, February 23, 2024
 Popular · Latest · Hot · Upcoming
178
rated 0 times [  184] [ 6]  / answers: 1 / hits: 38969  / 4 Years ago, tue, february 18, 2020, 12:00:00

I'm trying to use the Promise.allSettled API with TypeScript. Code here:


server.test.ts:


it('should partial success if QPS > 50', async () => {
const requests: any[] = [];
for (let i = 0; i < 51; i++) {
requests.push(rp('http://localhost:3000/place'));
}
await Promise.allSettled(requests);
// ...
});

But TSC throws an error:



Property 'allSettled' does not exist on type 'PromiseConstructor'.ts(2339)



I already added these values to the lib option in tsconfig.json:


tsconfig.json:


{
"compilerOptions": {
/* Basic Options */
"target": "ES2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */,
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
"lib": [
"ES2015",
"ES2016",
"ES2017",
"ES2018",
"ES2019",
"ES2020",
"ESNext"
]
// ...
}

TypeScript version: "typescript": "^3.7.3"


So, how can I solve this? I know I can use an alternative module, but I am curious about working with TypeScript natively.


More From » typescript

 Answers
84

The types for Promise.allSettled() were only merged in January, and will apparently be released in TypeScript 3.8.



As an interim solution, you can declare a mock-ish type for the function yourself:



declare interface PromiseConstructor {
allSettled(promises: Array<Promise<any>>): Promise<Array<{status: 'fulfilled' | 'rejected', value?: any, reason?: any}>>;
}

[#51199] Monday, February 10, 2020, 4 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
emiliano

Total Points: 381
Total Questions: 109
Total Answers: 93

Location: Jersey
Member since Fri, Oct 1, 2021
2 Years ago
;