Pracuję nad uaktualnieniem starego kodu TypeScript do najnowszej wersji kompilatora i mam problem z wywołaniem do setTimeout
. Kod oczekuje wywołania funkcji przeglądarki, setTimeout
która zwraca liczbę:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Jednak kompilator zamiast tego rozwiązuje to na implementację węzła, która zwraca NodeJS.Timer:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Ten kod nie działa w węźle, ale typy węzłów są pobierane jako zależność od czegoś innego (nie wiem co).
Jak mogę poinstruować kompilator, aby wybrał wersję setTimeout
, której chcę?
Oto kod, o którym mowa:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Powoduje to błąd kompilatora:
TS2322: Typu „Timer” nie można przypisać do typu „numer”.