diff --git a/src/index.ts b/src/index.ts index 3b413f8..db33654 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,13 +13,17 @@ export class ExecuteTooManyTimesError extends Error { } } -export function pending(n: number, fn: Callback) { +export function pending(fn: Callback, n: number): (err?: Error) => void; +export function pending(n: number, fn: Callback): (err?: Error) => void; +export function pending(n: number | Callback, fn: Callback | number): (err?: Error) => void { + let _fn: Callback; if (typeof n === 'function') { // keep compatibility for old version // pending(fn, n) - const tmp = n; - n = fn as unknown as number; - fn = tmp as Callback; + _fn = n; + n = fn as number; + } else { + _fn = fn as Callback; } let called = false; @@ -32,11 +36,11 @@ export function pending(n: number, fn: Callback) { } if (err) { called = true; - return fn(err); + return _fn(err); } times++; if (times === n) { - fn(); + _fn(); } else if (times > n) { const err = new ExecuteTooManyTimesError(n, times); err.stack += '\n' + callStack.stack; diff --git a/test/pedding.test.ts b/test/pedding.test.ts index 8dd4770..83695eb 100644 --- a/test/pedding.test.ts +++ b/test/pedding.test.ts @@ -19,7 +19,7 @@ describe('test/pedding.test.ts', () => { }); it('should called pedding(done, 100) then done()', done => { - done = pedding(done as any, 100 as any); + done = pedding(done, 100); for (let i = 0; i < 100; i++) { done(); }