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 setTimeouteine 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 setTimeoutgewü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.