Saya sedang mengupgrade beberapa kode TypeScript lama untuk menggunakan versi kompiler terbaru, dan saya mengalami masalah dengan panggilan ke setTimeout. Kode mengharapkan untuk memanggil fungsi browser setTimeoutyang mengembalikan angka:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Namun, kompilator menyelesaikan ini ke implementasi node, yang mengembalikan NodeJS.Timer:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Kode ini tidak berjalan dalam node, tetapi pengetikan node ditarik sebagai ketergantungan pada sesuatu yang lain (tidak yakin apa).
Bagaimana saya dapat menginstruksikan kompilator untuk memilih versi setTimeoutyang saya inginkan?
Berikut kode yang dimaksud:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Ini menghasilkan kesalahan kompiler:
TS2322: Ketik 'Timer' tidak dapat digunakan untuk mengetik 'nomor'.