Avatar ·

TypeScript: cómo usar correctamente setTimeout (¿window vs Node.js?)

¡Hola a todos! Acabo de empezar a aprender TypeScript y me encontré con un problema confuso al usar `setTimeout`. Estoy escribiendo un temporizador simple para una aplicación web, pero TypeScript se queja de los tipos. Aquí está mi código: ```typescript const timerId = setTimeout(() => { console.log("Pasaron 3 segundos"); }, 3000); clearTimeout(timerId); ``` TypeScript muestra un error: "Argument of type 'number' is not assignable to parameter of type 'Timeout'". Estoy desconcertado. En JavaScript, `setTimeout` siempre devolvía un número (el ID numérico del temporizador), y lo pasaba tranquilamente a `clearTimeout`. ¿Por qué no funciona esto en TypeScript? Investigué y descubrí que hay dos `setTimeout` diferentes: uno para el navegador (window.setTimeout) y otro para Node.js (global.setTimeout). Devuelven tipos distintos: en el navegador es `number`, y en Node.js es un objeto `NodeJS.Timeout`. Ahora no entiendo cómo hacer que TypeScript use la versión correcta. Mi objetivo es escribir código que funcione tanto en el navegador como en Node.