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 setTimeout
yang 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 setTimeout
yang 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'.