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.