From 92434b8642aeff543ca3736ae9ef93aa7d93b764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20B=C5=82a=C5=BCejewicz=20=28Peter=20Blazejewicz=29?= Date: Tue, 28 Jan 2020 01:00:33 +0100 Subject: [PATCH] feat(async): `retry` method definition update. Closes #41767 (#41792) - support for optional parameters - support for differnet return depending on invocation params Thanks! --- types/async/index.d.ts | 28 ++++++++++++++++++++-------- types/async/test/index.ts | 29 +++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/types/async/index.d.ts b/types/async/index.d.ts index 569276d67b..ddd2541c74 100644 --- a/types/async/index.d.ts +++ b/types/async/index.d.ts @@ -222,14 +222,26 @@ export function auto, E = Error>(tasks: AsyncAutoTasks export function autoInject(tasks: any, callback?: AsyncResultCallback): void; export function retry( - opts: number | { - times: number, - interval: number | ((retryCount: number) => number), - errorFilter?: (error: Error) => boolean - }, - task: (callback: AsyncResultCallback, results: any) => void, - callback: AsyncResultCallback - ): void; + opts?: + | number + | { + times?: number; + interval?: number | ((retryCount: number) => number); + errorFilter?: (error: Error) => boolean; + }, + task?: (callback: AsyncResultCallback, results: any) => void, +): Promise; +export function retry( + opts?: + | number + | { + times?: number; + interval?: number | ((retryCount: number) => number); + errorFilter?: (error: Error) => boolean; + }, + task?: (callback: AsyncResultCallback, results: any) => void, + callback?: AsyncResultCallback, +): void; export function retryable(opts: number | {times: number, interval: number}, task: AsyncFunction): AsyncFunction; export function apply(fn: Function, ...args: any[]): AsyncFunction; diff --git a/types/async/test/index.ts b/types/async/test/index.ts index 7e3cd35872..9569b76877 100644 --- a/types/async/test/index.ts +++ b/types/async/test/index.ts @@ -312,10 +312,31 @@ async.auto({ (err, results) => { console.log('finished auto'); } ); -async.retry(3, (callback, results) => { }, (err, result) => { }); -async.retry({ times: 3, interval: 200 }, (callback, results) => { }, (err, result) => { }); -async.retry({ times: 3, interval: (retryCount) => 200 * retryCount }, (callback, results) => { }, (err, result) => { }); -async.retry({ times: 3, interval: 200, errorFilter: (err) => true }, (callback, results) => { }, (err, result) => { }); +async.retry(); // $ExpectType Promise +async.retry(3); // $ExpectType Promise +// $ExpectType Promise +async.retry( + 3, + (callback, results) => {}, +); +// $ExpectType void +async.retry( + { times: 3, interval: 200 }, + (callback, results) => {}, + (err, result) => {}, +); +// $ExpectType void +async.retry( + { times: 3, interval: retryCount => 200 * retryCount }, + (callback, results) => {}, + (err, result) => {}, +); +// $ExpectType void +async.retry( + { times: 3, interval: 200, errorFilter: err => true }, + (callback, results) => {}, + (err, result) => {}, +); async.parallel([ (callback: (err: Error, val: string) => void) => { },