Avatar ·

¿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.