node: setImmediate returns Immediate (#29599)

* node: setImmediate returns Immediate

* node: defined Timer and Immediate internal classes

* node: better compatiblity with Timer interface

* node: return Timeout rather than Timer
This commit is contained in:
Piotr Roszatycki
2018-10-10 18:38:51 +02:00
committed by Andy
parent 1dcb4dba95
commit f5d631db0b

49
types/node/index.d.ts vendored
View File

@@ -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<void>;
function __promisify__<T>(ms: number, value: T): Promise<T>;
}
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<void>;
function __promisify__<T>(value: T): Promise<T>;
}
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<void>;
function __promisify__<T>(ms: number, value: T): Promise<T>;
}
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<void>;
function __promisify__<T>(value: T): Promise<T>;
}
function clearImmediate(immediateId: any): void;
function clearImmediate(immediateId: NodeJS.Immediate): void;
}
declare module "console" {