Búsqueda de sitios web

TypeScript - ¿Para qué sirven los archivos *.d.ts?


En muchos ejemplos de TypeScript, los archivos del tipo *.d.ts se crean automáticamente en el momento de la compilación. Algunos de los ejemplos hablan de declaraciones ambientales. Sin embargo, esto no me ayuda a entender la idea y el propósito detrás de esos archivos, ya que básicamente solo repiten lo que otras clases ya contienen.

Entonces, ¿por qué molestarse en crear archivos adicionales *.d.ts? ¿Cómo me ayudan dentro de mi código?

Respuesta #1

Los archivos de definición generados por el compilador de TypeScript son en efecto mayormente una repetición del código que escribiste, pero con algunas diferencias notables:

  • No contienen implementación, solo declaraciones
  • Solo contienen tipos accesibles públicamente

El caso de uso de estos archivos de declaración es para distribuir bibliotecas. Puedes distribuir una biblioteca sin el código original de TypeScript (ya que eso no importa durante la ejecución) y distribuir solo el JavaScript compilado. Los consumidores de JavaScript usarán el JavaScript y no les importará su origen. Los consumidores de TypeScript también usarán el JavaScript en tiempo de ejecución, pero los archivos .d.ts permitirán que el compilador verifique el código aunque el código fuente original de TypeScript de la biblioteca no esté presente.

Este mismo enfoque también podría usarse para dividir un proyecto grande en varios proyectos más pequeños que utilicen los archivos de declaración para establecer la interfaz entre ellos. Cada proyecto puede recompilarse de manera independiente sin recompilar todos, reduciendo los tiempos de compilación. De hecho, el compilador de TypeScript planea agregar soporte incorporado para esto en el futuro.

Respuesta #2

Si tienes un archivo de JavaScript y quieres agregar información de tipo avanzada, puedes hacerlo en un archivo de declaración. Es como dividir tu TypeScript entre dos archivos; un archivo de JavaScript .js con solo JavaScript simple, y un archivo de declaración .d.ts con toda la información de tipos.

Esto significa que hay cierta redundancia entre los archivos.

Comúnmente, si escribes una biblioteca en TypeScript, generas automáticamente el archivo de JavaScript y el archivo de declaraciones y empaquetas esos en lugar del TypeScript original. Esto significa que la biblioteca puede ser consumida desde aplicaciones JavaScript y TypeScript y permite que la biblioteca que la consume utilice una versión de TypeScript diferente a la de tu biblioteca.

Si tienes archivos JavaScript que deseas incluir en la compilación, no tienes que crear un archivo de declaración: los IDE permiten la inferencia al estilo TypeScript dentro de JavaScript (por ejemplo, VS Code permite el comentario // @ts-check) y el compilador permite que JavaScript se incluya en la compilación si así lo deseas.

Artículos relacionados