Opciones de compilación de TypeScript
El compilador de TypeScript (tsc) tiene numerosas opciones de compilación. Este tutorial detalla las opciones de compilación más comunes y sus funciones.
Diagrama SVG: proceso de compilación de TypeScriptOpciones de control de salida
Ejemplo
{
"compilerOptions": {
// Directorio de salida
"outDir": "./dist",
// Directorio raíz del código fuente
"rootDir": "./src",
// Generar archivos de declaración .d.ts
"declaration": true,
// Directorio de salida de archivos de declaración
"declarationDir": "./types",
// Generar source map
"sourceMap": true,
// Generar archivos .js.map
"mapRoot": "./map"
}
}
"compilerOptions": {
// Directorio de salida
"outDir": "./dist",
// Directorio raíz del código fuente
"rootDir": "./src",
// Generar archivos de declaración .d.ts
"declaration": true,
// Directorio de salida de archivos de declaración
"declarationDir": "./types",
// Generar source map
"sourceMap": true,
// Generar archivos .js.map
"mapRoot": "./map"
}
}
Opciones de verificación de tipos
Ejemplo
{
"compilerOptions": {
// Modo estricto (se recomienda mantenerlo siempre activado)
"strict": true,
// Verificar null y undefined
"strictNullChecks": true,
// Verificar el parámetro this
"noImplicitThis": true,
// Tipos de función estrictos
"strictFunctionTypes": true,
// Inicialización estricta de propiedades
"strictPropertyInitialization": true,
// No permitir any implícito
"noImplicitAny": true,
// No permitir devolver void
"noImplicitReturns": true,
// Activar todas las verificaciones estrictas
"strict": true
}
}
"compilerOptions": {
// Modo estricto (se recomienda mantenerlo siempre activado)
"strict": true,
// Verificar null y undefined
"strictNullChecks": true,
// Verificar el parámetro this
"noImplicitThis": true,
// Tipos de función estrictos
"strictFunctionTypes": true,
// Inicialización estricta de propiedades
"strictPropertyInitialization": true,
// No permitir any implícito
"noImplicitAny": true,
// No permitir devolver void
"noImplicitReturns": true,
// Activar todas las verificaciones estrictas
"strict": true
}
}
Opciones de módulos
Ejemplo
{
"compilerOptions": {
// Sistema de módulos
"module": "commonjs",
// Estrategia de resolución de módulos
"moduleResolution": "node",
// Ruta base de resolución
"baseUrl": ".",
// Alias de rutas
"paths": {
"@/*": ["src/*"]
},
// Interoperabilidad de módulos ES
"esModuleInterop": true,
// Permitir importaciones predeterminadas
"allowSyntheticDefaultImports": true,
// Aislar módulos
"isolatedModules": true
}
}
"compilerOptions": {
// Sistema de módulos
"module": "commonjs",
// Estrategia de resolución de módulos
"moduleResolution": "node",
// Ruta base de resolución
"baseUrl": ".",
// Alias de rutas
"paths": {
"@/*": ["src/*"]
},
// Interoperabilidad de módulos ES
"esModuleInterop": true,
// Permitir importaciones predeterminadas
"allowSyntheticDefaultImports": true,
// Aislar módulos
"isolatedModules": true
}
}
Opciones de características de ES
Ejemplo
{
"compilerOptions": {
// Objetivo de compilación
"target": "ES2020",
// Bibliotecas habilitadas
"lib": ["ES2020", "DOM"],
// Permitir variables locales no utilizadas
"noUnusedLocals": true,
// Permitir parámetros no utilizados
"noUnusedParameters": true,
// Reducción de nivel de código
"downlevelIteration": true
}
}
"compilerOptions": {
// Objetivo de compilación
"target": "ES2020",
// Bibliotecas habilitadas
"lib": ["ES2020", "DOM"],
// Permitir variables locales no utilizadas
"noUnusedLocals": true,
// Permitir parámetros no utilizados
"noUnusedParameters": true,
// Reducción de nivel de código
"downlevelIteration": true
}
}
Opciones experimentales
Ejemplo
{
"compilerOptions": {
// Habilitar decoradores
"experimentalDecorators": true,
// Habilitar metadatos de decoradores
"emitDecoratorMetadata": true,
// Habilitar iteradores asíncronos
"emitDecoratorMetadata": true,
// Omitir verificación de bibliotecas
"skipLibCheck": true
}
}
"compilerOptions": {
// Habilitar decoradores
"experimentalDecorators": true,
// Habilitar metadatos de decoradores
"emitDecoratorMetadata": true,
// Habilitar iteradores asíncronos
"emitDecoratorMetadata": true,
// Omitir verificación de bibliotecas
"skipLibCheck": true
}
}
Combinaciones comunes de opciones de compilación
Ejemplo
// Configuración recomendada para proyectos Node.js
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"lib": ["ES2020"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"declaration": true
}
}
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"lib": ["ES2020"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"declaration": true
}
}
Tabla de opciones de compilación
| Categoría | Opciones comunes |
|---|---|
| Salida | outDir, rootDir, declaration, sourceMap |
| Verificación de tipos | strict, strictNullChecks, noImplicitAny |
| Módulos | module, moduleResolution, paths, esModuleInterop |
| Características de ES | target, lib, downlevelIteration |
| Experimental | experimentalDecorators, emitDecoratorMetadata |
Resumen
- Modo estricto:Activar siempre strict: true
- Versión objetivo:Elegir el target adecuado según el entorno
- Sistema de módulos:Elegir module según el entorno de implementación
- Declaraciones de tipos:Habilitar declaration al desarrollar bibliotecas