Skip to content

Archivo tsconfig.json

Este archivo es el configurador principal del compilador de TypeScript para el proyecto.

  • Descripción: Un tsconfig.json le dice al compilador de TypeScript (TSC) cómo compilar los archivos TypeScript del proyecto en JavaScript. Define opciones como el modo estricto, el módulo de salida, la resolución de módulos, la habilitación de características experimentales (como decoradores) y el directorio de salida.
  • Propósito: Controlar el proceso de transpilación de TypeScript a JavaScript, asegurando que el código se compile de manera consistente, se aprovechen las características de TypeScript y se genere el código JavaScript adecuado para el entorno de ejecución (Node.js).
  • Contenido clave: (compilerOptions):
    • "strict": true: Habilita un conjunto de opciones de tipo estricto que garantizan una mayor seguridad de tipo y ayudan a prevenir errores comunes. Muy recomendado.
    • "moduleDetection": "force": Fuerza a TypeScript a tratar todos los archivos como módulos ES, incluso si no tienen sentencias import/export explícitas, lo cual es útil en proyectos con "type": "module" en package.json.
    • "module": "ES2022": Define el sistema de módulos de salida para el código JavaScript generado (ESM en este caso).
    • "moduleResolution": "node": Especifica cómo TypeScript resolverá los módulos importados, imitando la lógica de resolución de módulos de Node.js.
    • "resolveJsonModule": true: Permite importar archivos .json directamente en el código TypeScript.
    • "allowJs": true: Permite que TypeScript procese archivos JavaScript además de los TypeScript.
    • "esModuleInterop": true: Permite la importación y exportación de módulos estilo ES6 desde módulos estilo CommonJS, lo cual mejora la compatibilidad entre diferentes tipos de módulos.
    • "isolatedModules": true: Asegura que cada archivo se pueda compilar de forma aislada, sin depender del análisis de otros archivos. Esto es útil para herramientas como tsx y pkgroll.
    • "outDir": "./dist": Especifica el directorio donde se guardará el código JavaScript compilado.
    • "experimentalDecorators": true y "emitDecoratorMetadata": true: Opciones necesarias para habilitar el uso de decoradores (como los usados en Sequelize-TypeScript para definir modelos) y emitir metadatos de diseño para el código generado.
  • Rol en la aplicación: Es crucial para la integridad y la robustez del código base. Al definir reglas claras de compilación, tsconfig.json asegura que el código TypeScript se traduzca a JavaScript de manera predecible y que se aprovechen las ventajas de la tipificación estática de TypeScript para prevenir errores antes de la ejecución.
ts
{
  "compilerOptions": {
    "strict": true,
    "moduleDetection": "force",
    "module": "ES2022",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "allowJs": true,
    "esModuleInterop": true,
    "isolatedModules": true,
    "outDir": "./dist",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}