diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 2296d085b9..73558e4a8f 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -207,20 +207,20 @@ declare var console: Console; declare var __filename: string; declare var __dirname: string; -declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; +declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; declare namespace setTimeout { function __promisify__(ms: number): Promise; function __promisify__(ms: number, value: T): Promise; } -declare function clearTimeout(timeoutId: NodeJS.Timer): void; -declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; -declare function clearInterval(intervalId: NodeJS.Timer): void; -declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; +declare function clearTimeout(timeoutId: NodeJS.Timeout): void; +declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; +declare function clearInterval(intervalId: NodeJS.Timeout): void; +declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate; declare namespace setImmediate { function __promisify__(): Promise; function __promisify__(value: T): Promise; } -declare function clearImmediate(immediateId: any): void; +declare function clearImmediate(immediateId: NodeJS.Immediate): void; // TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version. interface NodeRequireFunction { @@ -959,9 +959,9 @@ declare namespace NodeJS { Uint8ClampedArray: Function; WeakMap: WeakMapConstructor; WeakSet: WeakSetConstructor; - clearImmediate: (immediateId: any) => void; - clearInterval: (intervalId: Timer) => void; - clearTimeout: (timeoutId: Timer) => void; + clearImmediate: (immediateId: Immediate) => void; + clearInterval: (intervalId: Timeout) => void; + clearTimeout: (timeoutId: Timeout) => void; console: typeof console; decodeURI: typeof decodeURI; decodeURIComponent: typeof decodeURIComponent; @@ -976,9 +976,9 @@ declare namespace NodeJS { parseInt: typeof parseInt; process: Process; root: Global; - setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => any; - setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timer; - setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timer; + setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => Immediate; + setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout; + setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout; undefined: typeof undefined; unescape: (str: string) => string; gc: () => void; @@ -987,6 +987,19 @@ declare namespace NodeJS { interface Timer { ref(): void; + refresh(): void; + unref(): void; + } + + class Immediate { + ref(): void; + unref(): void; + _onImmediate: Function; // to distinguish it from the Timeout class + } + + class Timeout implements Timer { + ref(): void; + refresh(): void; unref(): void; } @@ -7211,20 +7224,20 @@ declare module "v8" { } declare module "timers" { - function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; + function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; namespace setTimeout { function __promisify__(ms: number): Promise; function __promisify__(ms: number, value: T): Promise; } - function clearTimeout(timeoutId: NodeJS.Timer): void; - function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer; - function clearInterval(intervalId: NodeJS.Timer): void; - function setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; + function clearTimeout(timeoutId: NodeJS.Timeout): void; + function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout; + function clearInterval(intervalId: NodeJS.Timeout): void; + function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate; namespace setImmediate { function __promisify__(): Promise; function __promisify__(value: T): Promise; } - function clearImmediate(immediateId: any): void; + function clearImmediate(immediateId: NodeJS.Immediate): void; } declare module "console" {