Tôi đang tiến hành nâng cấp một số mã TypeScript cũ để sử dụng phiên bản trình biên dịch mới nhất và tôi đang gặp sự cố khi gọi tới setTimeout
. Mã dự kiến sẽ gọi setTimeout
hàm của trình duyệt trả về một số:
setTimeout(handler: (...args: any[]) => void, timeout: number): number;
Tuy nhiên, thay vào đó, trình biên dịch đang giải quyết vấn đề này cho việc triển khai nút, nó trả về một NodeJS.Timer:
setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer;
Mã này không chạy trong nút, nhưng các kiểu gõ nút đang được kéo vào như một sự phụ thuộc vào một thứ khác (không chắc chắn là gì).
Làm cách nào để hướng dẫn trình biên dịch chọn phiên bản setTimeout
mà tôi muốn?
Đây là mã được đề cập:
let n: number;
n = setTimeout(function () { /* snip */ }, 500);
Điều này tạo ra lỗi trình biên dịch:
TS2322: Không thể gán loại 'Bộ hẹn giờ' cho loại 'số'.