¿Por qué se necesita la palabra clave `declare` en TypeScript? Explique con ejemplos
¡Hola a todos! Empecé a estudiar TypeScript y me topé con la palabra clave `declare`. En la documentación oficial está escrito que se usa para "declarar variables, funciones y clases que existen en otro lugar". Pero no entiendo del todo por qué es necesario y cómo funciona en la práctica.
Por ejemplo, escribo un script simple que usa la variable global `$` (jQuery). Sé que está cargada a través de CDN en HTML, pero TypeScript se queja de que `$` no está definida. Intenté escribir:
```typescript
declare var $: any;
```
Y el error desapareció. Pero ¿por qué no puedo simplemente escribir `var $: any;`? ¿Cuál es la diferencia? Si escribo `let $: any;`, también funciona, pero entonces TypeScript considerará que estoy creando una nueva variable, en lugar de describir una ya existente.
También vi que `declare` se usa en archivos `.d.ts`. ¿Para qué sirven si se puede escribir todo en archivos `.ts` normales? Explique, por favor, en palabras simples, para qué sirve exactamente `declare` y en qué casos se usa.