Cuando trabajamos con TypeScript y empezamos a dividir nuestro código en múltiples archivos para organizar mejor un proyecto, surge la necesidad de compilar todo de manera eficiente y ordenada. Por ejemplo, si estamos desarrollando una aplicación para controlar el stock de una ferretería, podemos tener archivos separados como factura.ts o impuestos.ts para diferentes funcionalidades. Esto facilita la gestión del código, pero compilar cada archivo por separado puede volverse tedioso y propenso a errores.
Aquí es donde entra en juego el archivo tsconfig.json. Este archivo de configuración le indica a TypeScript cómo debe tratar todos los archivos que forman parte de un proyecto. En lugar de compilar archivo por archivo, podemos decirle a TypeScript que considere toda una carpeta como un proyecto completo y que compile todo de una vez, respetando las opciones que definamos en este archivo.
Para crear un tsconfig.json, simplemente ejecutamos el comando tsc --init en la raíz de nuestro proyecto. Esto genera un archivo con muchas opciones comentadas que podemos ajustar según nuestras necesidades. Por ejemplo, podemos configurar la versión de ECMAScript a la que queremos transpilar nuestro código usando la opción target. Si sabemos que nuestro entorno de ejecución soporta características modernas, como las interpolaciones de cadenas de ECMAScript 2018, podemos indicarle a TypeScript que no las transforme en concatenaciones, manteniendo un código más limpio y eficiente.
También podemos definir el sistema de módulos que queremos usar, como CommonJS, AMD, UMD o ES Modules, dependiendo de cómo queramos importar y exportar nuestros archivos. Si estamos trabajando con React, podemos habilitar el soporte para JSX. Además, es muy útil especificar un directorio de salida para los archivos compilados con la opción outDir. Por ejemplo, podemos indicar que todos los archivos JavaScript generados se coloquen en una carpeta llamada dist o compilado, evitando mezclar los archivos .ts con los .js y manteniendo nuestro proyecto más ordenado.
Otra opción importante es activar el modo estricto con strict, que habilita varias comprobaciones para evitar errores comunes, como el uso implícito de any o valores nulos sin control. Esto nos ayuda a mantener un código más robusto y seguro.
Una vez configurado el tsconfig.json, compilar el proyecto es tan sencillo como ejecutar tsc sin argumentos. TypeScript detectará automáticamente el archivo de configuración y aplicará todas las opciones definidas. Si no existe este archivo, el comando tsc sin parámetros dará un error, por lo que tener un tsconfig.json es fundamental para proyectos medianos o grandes.
Veamos un ejemplo básico de un archivo tsconfig.json que podríamos usar para un proyecto que se ejecuta en Node.js moderno y que queremos organizar con salida en una carpeta dist:
{
"compilerOptions": {
"target": "ES2018",
"module": "CommonJS",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true
},
"include": ["./src/**/*"]
}
En este ejemplo, indicamos que queremos que el código se transpile a ECMAScript 2018, que use el sistema de módulos CommonJS, que los archivos compilados se coloquen en la carpeta dist, y que se active el modo estricto para mayor seguridad. Además, con include le decimos que compile todos los archivos TypeScript dentro de la carpeta src.
Con esta configuración, podemos estructurar nuestro proyecto en múltiples archivos dentro de src, y al ejecutar tsc, todo se compilará automáticamente y se colocará en dist, listo para ejecutarse en Node.js.
En definitiva, usar tsconfig.json es la forma más práctica y profesional de gestionar proyectos TypeScript, especialmente cuando creamos librerías o aplicaciones que requieren una estructura clara y una compilación controlada. Nos facilita la vida y mejora la mantenibilidad del código.