Las opciones de tsconfig que importan, agrupadas por tarea: endurecer la comprobación de tipos, fijar el destino del lenguaje y los módulos, controlar qué se emite, mapear rutas de importación, estructurar builds multiproyecto y ajustar las comprobaciones restantes.
Un tsconfig indica al compilador qué archivos incluir y cuán estricto ser. Dos opciones hacen la mayor parte del trabajo: target fija el nivel de generación de JavaScript, y strict activa las comprobaciones de seguridad como paquete. Las opciones de abajo son las que cambian el comportamiento; las activadas por defecto se indican. Deriva tu configuración de una base y luego anula solo lo que difiera.
Tabla de referencia · 55 entradas
Opciones de tsconfigExplained
55 of 55 rows
Estrictez
Interruptor maestro: activa strictNullChecks, noImplicitAny y varios otros a la vez.
Error en parámetros y variables cuyo tipo no puede inferirse (de otro modo serían any).
null y undefined ya no son asignables a todo tipo; hay que permitirlos explícitamente.
Comprueba los parámetros de función contravariantemente; detecta tipos de parámetro de callback no seguros.
Comprueba bind, call y apply contra los parámetros declarados de la función.
Error cuando una propiedad de clase no tiene valor inicial ni se asigna en el constructor.
Una propiedad opcional { p?: T } ya no acepta una asignación explícita de undefined.
Exige la palabra clave override en miembros que ocultan un miembro de la clase base.
Error en variables locales declaradas que nunca se leen.
Error en parámetros de función declarados que nunca se leen.
Error en instrucciones de expresión sin efecto.
Se prohíbe el acceso con punto para claves de firma de índice; usa corchetes (obj["key"]).
Error cuando una ruta de código devuelve un valor pero otra no.
Error cuando un case de un switch cae al siguiente sin break.
Lenguaje y módulos
El nivel de generación de JavaScript (p. ej. ES2022); los destinos más nuevos emiten menos downleveling.
Las APIs integradas disponibles (p. ej. ES2022, DOM, DOM.Iterable).
El sistema de módulos emitido (p. ej. ESNext, CommonJS, NodeNext).
Usa las reglas reales de Node: cada archivo elige CJS o ESM según el package.json más cercano, y las importaciones relativas necesitan extensiones de archivo.
Cómo se resuelven las rutas de importación (p. ej. bundler, node, nodenext).
Cuándo un archivo cuenta como módulo: auto (por presencia de import/export), legacy o force (siempre).
Permite el estilo de importación por defecto desde módulos CommonJS (true por defecto en la mayoría de configuraciones).
Permite importaciones por defecto desde módulos que solo exportan valores con nombre (solo a nivel de tipos).
Las importaciones se emiten tal cual se escribieron; las de solo tipos deben usar import type (TS 5).
Permite que las importaciones carguen archivos .json como valores tipados.
Incluye archivos .js como entrada de la compilación.
También comprueba los tipos de los archivos .js, leyendo sus comentarios JSDoc; implica allowJs.
Cómo se compila .tsx: react-jsx (runtime automático), react (React.createElement) o preserve.
Restringe los paquetes @types incluidos automáticamente a esta lista; un array vacío no incluye ninguno.
Carpetas donde buscar paquetes @types en lugar de cada node_modules/@types del árbol.
Garantiza que cada archivo pueda transpilirse de forma aislada (requerido por bundlers y esbuild).
Emisión
Dónde se escribe el JavaScript compilado.
La raíz de los archivos fuente; mantiene estable la forma del árbol de salida.
Emite archivos .js.map para que los depuradores mapeen de vuelta a TypeScript.
Incrusta el source map como comentario dentro del archivo .js en vez de un archivo .js.map.
Emite declaraciones de tipos .d.ts (necesario para bibliotecas).
Emite archivos .d.ts.map para que los editores salten de las declaraciones al código TypeScript.
Emite solo archivos .d.ts; el JavaScript queda para un bundler (requiere declaration o composite).
Reutiliza ayudantes como __rest desde tslib en vez de emitirlos en cada archivo.
Corrige for..of, spread y desestructuración sobre iterables cuando el target es anterior a ES2015.
Elimina los comentarios del JavaScript emitido.
Solo comprobación de tipos; no escribe archivos (se usa cuando un bundler hace la emisión).
Rutas
Un directorio base para la resolución de módulos no relativos.
Mapea prefijos de importación a ubicaciones, p. ej. { "@/*": ["src/*"] }.
Trata varios directorios como una raíz virtual para la resolución.
Estructura del proyecto
Marca un proyecto como construible para referencias de proyecto (activa declaration, incremental).
Depende de otros proyectos tsconfig para builds más rápidos y aislados.
Guarda información de build para saltarse los archivos sin cambios en la siguiente ejecución.
Otras comprobaciones
Omite la comprobación de tipos de archivos .d.ts por velocidad (true por defecto).
Error en importaciones que discrepan de la capitalización real del archivo.
El acceso a arrays e índices devuelve T | undefined, no T.
Los campos de clase se crean con Object.defineProperty en vez de asignación simple (true por defecto para targets ES2022+).
Activa la sintaxis de decoradores heredada que usan frameworks antiguos (previa al estándar).
Informa nombres de tipo completos en los errores en vez de truncar los largos.
Error cuando una importación de solo efectos (import "./x.css") no resuelve a nada.
Permite rutas de importación terminadas en .ts (requiere noEmit o emitDeclarationOnly).