From e60f45b9a329b24e1d556d70d6a6d88e93cca281 Mon Sep 17 00:00:00 2001 From: yw662 Date: Mon, 1 Jul 2019 03:50:16 -0400 Subject: [PATCH] Update setTimeout and setInterval signatures #32186 The original signatures of `setTimeout` and `setInterval` may allow wrongly typed additional parameters passed to handler function. This update fixes the issue without introducing any other changes With this update, typescript can correctly reject wrongly typed additional parameters. @fatcerberus is the author of the `setTimeout` signaure. --- lib/lib.dom.d.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 7817a0e426704..6bd6d9e8d43bd 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -17144,8 +17144,10 @@ interface WindowOrWorkerGlobalScope { createImageBitmap(image: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number): Promise; fetch(input: RequestInfo, init?: RequestInit): Promise; queueMicrotask(callback: Function): void; - setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number; - setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number; + setInterval(handler: (...args: A) => void, timeout?: number, ...arguments: A): number; + setInterval(handler: string, timeout?: number, ...arguments: any[]): number; + setTimeout(handler: (...args: A) => void, timeout?: number, ...arguments: A): number; + setTimeout(handler: string, timeout?: number, ...arguments: any[]): number; } interface WindowSessionStorage { @@ -18232,8 +18234,10 @@ declare function createImageBitmap(image: ImageBitmapSource): Promise; declare function fetch(input: RequestInfo, init?: RequestInit): Promise; declare function queueMicrotask(callback: Function): void; -declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number; -declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number; +declare function setInterval(handler: (...args: A) => void, timeout?: number, ...arguments: A): number; +declare function setInterval(handler: string, timeout?: number, ...arguments: any[]): number; +declare function setTimeout(handler: (...args: A) => void, timeout?: number, ...arguments: A): number; +declare function setTimeout(handler: string, timeout?: number, ...arguments: any[]): number; declare var sessionStorage: Storage; declare var localStorage: Storage; declare var onafterprint: ((this: Window, ev: Event) => any) | null;