tsconfig.json
Herramientas de TypeScript y Optimización de Compilador

Generador de Configuración TypeScript (tsconfig.json)

Genera configuraciones tsconfig.json modernas y robustas para Next.js, Node.js, Vite o librerías con modo estricto, alias de rutas y resolución de módulos.

100% Privacidad del Cliente
Cero transmisión al servidor
Plantillas:
Destino y Resolución de Módulos
Definiciones de biblioteca estándar integradas (lib):
Comprobación Estricta
Emisión y Declaraciones
Modo de emisión Bundler: TypeScript funciona solo como verificador de tipos. Su empaquetador genera los paquetes en tiempo de ejecución.
Interoperabilidad y Módulos
Mapeo de Rutas (Paths)
→
Archivos Include y Exclude
tsconfig.json Listo para TypeScript 5.x
Entorno Destino
ES2022 • preserve
Sistema de Módulos
ESNext / bundler
Puntaje Estricto
100/100 • Comprobación estricta

100% Privacidad en el Navegador

Cree y valide su configuración de TypeScript en el sandbox del navegador sin transmitir datos a servidores externos.

Compatibilidad con TS 5.x y Bundlers

Alineado con especificaciones modernas de TypeScript como verbatimModuleSyntax y resolución de bundler.

Diagnóstico de Conflictos en Tiempo Real

Detecta advertencias de compatibilidad, opciones obsoletas y mejoras de rendimiento antes de compilar.

Referencia técnica y guía de arquitectura

Guía para Desarrolladores del Generador de Configuración TypeScript (tsconfig.json) — Guía de referencia

Genera configuraciones tsconfig.json modernas y robustas para Next.js, Node.js, Vite o librerías con modo estricto, alias de rutas y resolución de módulos.

Parámetros clave y controles

targetEnum (ES5 | ES6/ES2015 - ES2023 | ESNext)

Especifica la versión de ECMAScript para el JavaScript emitido y las definiciones de tipos estándar. Los entornos modernos (Node.js 18+ y navegadores actuales) deben usar ES2022 o ESNext.

Por defecto: ES2022
moduleResolutionEnum (Bundler | NodeNext | Node16 | Node10)

Determina cómo TypeScript asigna los identificadores de importación a archivos físicos. Usa 'Bundler' para Vite, Turbopack o Next.js, y 'NodeNext' para paquetes nativos ESM/CJS de Node.js.

Por defecto: Bundler
moduleEnum (ESNext | NodeNext | CommonJS | Preserve)

Establece el formato de módulos para la salida JavaScript. 'ESNext' genera sentencias estándar import/export ideales para empaquetadores modernos.

Por defecto: ESNext
strictBoolean (true | false)

Habilita el conjunto completo de comprobaciones estrictas de tipos, incluyendo strictNullChecks, noImplicitAny, strictFunctionTypes y strictPropertyInitialization.

Por defecto: true
jsxEnum (react-jsx | react-jsxdev | preserve | react)

Controla cómo se transforman las construcciones JSX en archivos .tsx. 'react-jsx' emite automáticamente las llamadas al runtime moderno de JSX sin necesidad de tener React en el ámbito global.

Por defecto: react-jsx
isolatedModulesBoolean (true | false)

Garantiza que cada archivo pueda compilarse de forma segura e independiente mediante herramientas basadas en archivos individuales como Vite, esbuild, SWC o Babel.

Por defecto: true
skipLibCheckBoolean (true | false)

Omite la comprobación de tipos en archivos de declaración (*.d.ts) dentro de node_modules, acelerando drásticamente la compilación sin perder seguridad en el código de la aplicación.

Por defecto: true

Consejos profesionales y mejores prácticas

Delegar transpilación al bundler

Al utilizar TypeScript junto con Vite, Next.js, esbuild o Turbopack, define 'noEmit: true' junto con 'moduleResolution: Bundler'. El empaquetador gestiona la transpilación multihilo de alto rendimiento, permitiendo que tsc se dedique exclusivamente a la validación de tipos (tsc --noEmit).

Configurar alias sin baseUrl

Define alias de importación en compilerOptions.paths (como '@/*': ['./src/*']). A partir de TypeScript 4.1, los paths se resuelven de forma relativa al directorio del archivo tsconfig.json sin necesidad de especificar baseUrl, evitando problemas en monorepos.

Compilación incremental monorepo

En espacios de trabajo con Turborepo, Nx o pnpm, divide tus paquetes en subproyectos con 'composite: true' y 'declaration: true'. Vincularlos mediante el array raíz 'references' permite que 'tsc --build' utilice la caché de .tsbuildinfo para compilar de forma incremental.

Aserción definitiva en ORMs

Al usar ORMs como Prisma o TypeORM con strictPropertyInitialization activo, es común ver advertencias en propiedades no inicializadas en el constructor. En lugar de desactivar el modo estricto, usa la aserción de asignación definitiva ('title!: string') en campos gestionados por la base de datos.

Errores comunes y solución de problemas

Error 'Cannot find module or its corresponding type declarations' al importar paquetes modernos ESM

Configura 'moduleResolution: Bundler' si estás compilando con Vite, Webpack 5 o Next.js. Si desarrollas una aplicación nativa para Node.js, usa 'moduleResolution: NodeNext' y asegúrate de que las importaciones relativas incluyan la extensión de archivo explícita (ej. import { util } from './util.js').

Los alias de ruta (@/*) compilan correctamente con tsc pero fallan en tiempo de ejecución con 'Cannot find module'

El compilador de TypeScript no reescribe las rutas de importación en los archivos JS emitidos. Para Node.js, utiliza 'tsconfig-paths', 'tsx' o las importaciones de subrutas nativas de package.json ('#imports'). Para proyectos frontend, replica el alias en vite.config.ts o webpack.config.js.

Compilación de TypeScript excesivamente lenta y retrasos en el editor en proyectos grandes

Añade 'skipLibCheck: true' en compilerOptions. Esto evita la comprobación redundante de tipos en los archivos de declaración dentro de node_modules, reduciendo los tiempos de compilación entre un 50% y un 70% sin comprometer la seguridad de tu código fuente.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia entre moduleResolution 'Bundler' y 'NodeNext'?▼

'NodeNext' emula la resolución nativa de módulos ECMAScript de Node.js, requiriendo extensiones explícitas (.js) en rutas relativas y respetando el mapa de 'exports' de package.json. 'Bundler' está diseñado para herramientas como Vite, Webpack y esbuild, permitiendo importaciones sin extensión, resolución híbrida ESM/CJS e importación directa de recursos no JS (CSS, SVG).

¿Por qué se recomienda strict: true para todos los proyectos nuevos en TypeScript?▼

'strict: true' activa de inmediato protecciones vitales como strictNullChecks y noImplicitAny. Esto previene en tiempo de compilación errores comunes en ejecución como 'undefined is not a function'. Activar el modo estricto en proyectos existentes requiere costosas refactorizaciones, por lo que adoptarlo desde el inicio es la mejor práctica.

¿Cómo interactúan target, module y lib en tsconfig.json?▼

'target' define la versión de sintaxis JavaScript generada (ej. clases, async/await). 'module' determina el formato del sistema de módulos (ej. CommonJS vs ESM). 'lib' le indica al compilador qué definiciones de tipos de APIs globales (como DOM o ES2022) están disponibles durante la comprobación estática, sin alterar el código JavaScript producido.

¿Qué hace isolatedModules: true y por qué es obligatorio para Vite y SWC?▼

Herramientas como esbuild, SWC y Babel procesan cada archivo individualmente en paralelo sin consultar el grafo de tipos completo del proyecto. Patrones como 'const enum' o re-exportaciones de tipos sin 'export type' pueden generar código inválido al aislarse. 'isolatedModules: true' alerta a tsc para advertirte de estas incompatibilidades con anticipación.

¿Se deben versionar en git los archivos .tsbuildinfo y las carpetas de salida generadas?▼

No. Debes añadir '*.tsbuildinfo' y las carpetas de salida (como dist/, build/ o out/) a tu archivo .gitignore. El archivo .tsbuildinfo contiene hashes con rutas absolutas locales para compilaciones incrementales, y los artefactos finales deben generarse siempre de manera reproducible en el pipeline de CI/CD.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía de Desarrollo: Generador de DDL CREATE TABLE de JSON a ClickHouseDesarrollo

Convierta documentos JSON de muestra en DDL de SQL para ClickHouse con motor MergeTree, tipos UInt/Int/Float/String/DateTime y mapeo de columnas Array/Nested.

Abrir herramienta→
Guía de Desarrollo: Generador de Esquema de Tabla Google BigQuery desde JSONDesarrollo

Infiere y convierte objetos JSON en esquemas de tabla para Google Cloud BigQuery con campos RECORD, STRING, INTEGER, NUMERIC y TIMESTAMP.

Abrir herramienta→
Guía para Desarrolladores: Generador de DDL CREATE TABLE de JSON a SnowflakeDesarrollo

Transforme esquemas y cargas útiles JSON en sentencias SQL CREATE TABLE para Snowflake listas para producción con tipos de datos VARIANT, VARCHAR, NUMBER, BOOLEAN y TIMESTAMP_NTZ.

Abrir herramienta→
Guía de Desarrollo: Generador de Variables y Locals de Terraform HCL desde JSON / YAMLDesarrollo

Convierta cargas útiles JSON y YAML en restricciones de tipo de variables Terraform HCL (type = object({...})), valores predeterminados, bloques locals y definiciones terraform.tfvars.

Abrir herramienta→
Guía de Desarrollo: Conversor de OpenAPI / Swagger a GraphQL SDLDesarrollo

Convierte endpoints REST, cuerpos de solicitud y esquemas JSON de OpenAPI 3.0/3.1 y Swagger 2.0 en tipos, consultas, mutaciones y definiciones de entrada de GraphQL SDL.

Abrir herramienta→
Guía de desarrollo del generador de esquemas TypeBox TypeScript desde DDL SQLDesarrollo

Convierta sentencias SQL CREATE TABLE en esquemas de validación en tiempo de ejecución de @sinclair/typebox utilizando Type.Object, Type.String, Type.Number y Type.Optional.

Abrir herramienta→