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 TypeScript Fondo Título Proceso de compilación de TypeScript y opciones de compilación Código fuente Código fuente de TypeScript .ts / .tsx Incluye anotaciones de tipos Flecha 1 Compilador de TypeScript Compilador de TypeScript (tsc) Opciones de compilación Funciones de las opciones de compilación: • Verificación de tipos (strict) • Formato de salida (module) • Versión objetivo (target) • Archivos de declaración (declaration) ...más opciones Flecha 2 Salida de compilación Salida de compilación .js - JavaScript .d.ts - Declaraciones de tipos .map - Source Map Parte inferior: clasificación de las opciones de compilación Clasificación de las opciones de compilación Categoría 1 Verificación de tipos strict noImplicitAny strictNullChecks Categoría 2 Control de salida outDir declaration sourceMap Categoría 3 Sistema de módulos module moduleResolution esModuleInterop Categoría 4 Características del lenguaje target lib jsx Marcador de flecha

Opciones 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"
    }
}

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
    }
}

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
    }
}

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
    }
}

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
    }
}

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
    }
}

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
Otras extensiones