Lezioni del modulo (1/2)
Configurazione con tsconfig.json
Il file tsconfig.json definisce la directory radice del progetto TypeScript e specifica le opzioni di compilazione necessarie per compilare il progetto.
Quando esegui tsc nella cartella di un progetto, il compilatore cerca questo file per capire come comportarsi.
Struttura del file tsconfig.json
Un file di configurazione tipico si presenta così:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
Le chiavi principali sono:
compilerOptions: Le impostazioni per il compilatore.include: I file o le cartelle che devono essere compilati.exclude: I file o le cartelle da ignorare durante la compilazione.
Opzioni del Compilatore Chiave
Ecco le opzioni più importanti da conoscere:
target: Specifica la versione di JavaScript generata in output (es.es5,es6/es2015,es2020,esnext).module: Specifica il sistema di moduli da usare nell'output (es.commonjs,esnext,node16).strict: Abilita un ampio gruppo di controlli di tipo rigorosi. È altamente raccomandato impostarlo atrueper massimizzare la sicurezza del codice. Abilita opzioni come:noImplicitAny: Genera un errore se manca l'annotazione di tipo per parametri che altrimenti verrebbero dedotti comeany.strictNullChecks: Impedisce l'assegnazione dinulloundefineda tipi che non li prevedono esplicitamente nella loro unione.
Prova tu
Esercizio 1: Gestione di strictNullChecks
Sotto l'opzione strictNullChecks: true del file tsconfig.json, non possiamo assegnare null o undefined a tipi primitivi. Dichiara una funzione chiamata parseAge che accetta input di tipo string | null e restituisce un number se input non è nullo ed è un intero valido, altrimenti restituisce 0. Gestisci esplicitamente il caso null per superare la compilazione strict.
Mostra suggerimento
Verifica se input è null all'inizio della funzione e ritorna subito 0 prima di processare la stringa.
Soluzione disponibile dopo 3 tentativi
Esercizio 2: Tipizzazione Rigida senza Implicit Any
Sotto noImplicitAny: true, ogni parametro di cui non è possibile inferire il tipo deve essere tipizzato esplicitamente. Crea una funzione chiamata processItems che accetta un array items (array di numeri) e una funzione callback che prende un singolo numero come argomento e non restituisce nulla. Assicurati di non usare any e tipizzare tutto esplicitamente.
Mostra suggerimento
Dichiara la funzione con signature function processItems(items: number[], callback: (item: number) => void): void.
Soluzione disponibile dopo 3 tentativi