Sto lavorando all'aggiornamento di un vecchio codice TypeScript per utilizzare l'ultima versione del compilatore e ho problemi con una chiamata a setTimeout
. Il codice si aspetta di chiamare la setTimeout
funzione del browser che restituisce un numero:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Tuttavia, il compilatore risolve invece questo problema nell'implementazione del nodo, che restituisce un NodeJS.Timer:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Questo codice non viene eseguito nel nodo, ma le tipizzazioni del nodo vengono inserite come dipendenza da qualcos'altro (non so cosa).
Come posso istruire il compilatore a scegliere la versione setTimeout
che desidero?
Ecco il codice in questione:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Questo produce l'errore del compilatore:
TS2322: il tipo "Timer" non è assegnabile al tipo "numero".