Lecciones del módulo (1/2)
Configuración con tsconfig.json
El archivo tsconfig.json define el directorio raíz del proyecto TypeScript y especifica las opciones de compilación necesarias para compilar el proyecto.
Cuando ejecutas tsc en la carpeta de un proyecto, el compilador busca este archivo para saber cómo comportarse.
Estructura del archivo tsconfig.json
Un archivo de configuración típico se ve así:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Las claves principales son:
compilerOptions: Las configuraciones para el compilador.include: Los archivos o carpetas que deben compilarse.exclude: Los archivos o carpetas que se deben ignorar durante la compilación.
Opciones clave del compilador
Aquí están las opciones más importantes que debes conocer:
target: Especifica la versión de JavaScript generada en la salida (por ejemplo,es5,es6/es2015,es2020,esnext).module: Especifica el sistema de módulos que se utilizará en la salida (por ejemplo,commonjs,esnext,node16).strict: Habilita un amplio grupo de comprobaciones de tipo estrictas. Se recomienda encarecidamente establecerlo entruepara maximizar la seguridad del código. Habilita opciones como:noImplicitAny: Genera un error si falta la anotación de tipo para parámetros que de otro modo se deducirían comoany.strictNullChecks: Evita la asignación denulloundefineda tipos que no los admiten explícitamente en su unión.
Pruébalo tú mismo
Ejercicio 1: Gestión de strictNullChecks
Bajo la opción strictNullChecks: true del archivo tsconfig.json, no podemos asignar null o undefined a tipos primitivos. Declara una función llamada parseAge que acepte una entrada de tipo string | null y devuelva un number si la entrada no es nula y es un entero válido, de lo contrario devuelve 0. Gestiona explícitamente el caso null para superar la compilación estricta.
Mostrar pista
Comprueba si input es null al principio de la función y devuelve inmediatamente 0 antes de procesar la cadena.
Solución disponible después de 3 intentos
Ejercicio 2: Tipado estricto sin Implicit Any
Bajo noImplicitAny: true, cada parámetro cuyo tipo no se pueda inferir debe estar tipado explícitamente. Crea una función llamada processItems que acepte un array items (array de números) y una función callback que tome un solo número como argumento y no devuelva nada. Asegúrate de no usar any y tipar todo explícitamente.
Mostrar pista
Declara la función con la firma function processItems(items: number[], callback: (item: number) => void): void.
Solución disponible después de 3 intentos