Ich arbeite daran, alten TypeScript-Code auf die neueste Compiler-Version zu aktualisieren, und habe Probleme mit einem Aufruf von setTimeout
. Der Code erwartet, die Browserfunktion aufzurufen, die setTimeout
eine Nummer zurückgibt:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Der Compiler löst dies jedoch stattdessen in der Knotenimplementierung auf, die einen NodeJS.Timer zurückgibt:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Dieser Code wird nicht im Knoten ausgeführt, aber die Knotentypisierungen werden als Abhängigkeit von etwas anderem abgerufen (nicht sicher, was).
Wie kann ich den Compiler anweisen, die setTimeout
gewünschte Version auszuwählen ?
Hier ist der fragliche Code:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Dies erzeugt den Compilerfehler:
TS2322: Der Typ 'Timer' kann nicht dem Typ 'Nummer' zugewiesen werden.