
GUIDE PER ASPIRANTI PROGRAMMATORI
Guardie di tipo in Typescript
Un caso d’uso particolare delle funzioni è quello di usarle per fare type narrowing, cioè per verificare se un dato sia di un certo tipo. Abbiamo già parlato di restringimento di tipo in Typescript, facendo esempi come il seguente: function concat(a: string | number, b: string | number): string { if (typeof a === "string")…


Vuoi avviare una nuova carriera o fare un upgrade?
Trova il corso Digital & Tech più adatto a te nel nostro catalogo!
- Tipi primitivi in Typescript
- Tipi letterali in Typescript
- Null e undefined in Typescript
- Tipi enumerativi in Typescript
- Oggetti in Typescript
- Array e tuple in Typescript
- Funzioni in Typescript
- Guardie di tipo in Typescript
- Any vs unknown in Typescript
- Tipi algebrici in Typescript
- Parametri di tipo in Typescript
- Manipolazione di tipi in Typescript
- Tipi utility in Typescript
Un caso d’uso particolare delle funzioni è quello di usarle per fare type narrowing, cioè per verificare se un dato sia di un certo tipo. Abbiamo già parlato di restringimento di tipo in Typescript, facendo esempi come il seguente:
function concat(a: string | number, b: string | number): string { if (typeof a === "string") return a + b; // a: string return String(a) + b; }
Immaginiamo di voler delegare il controllo sul tipo di a a una fuzione isString:
function isString(data: string | number): boolean { return typeof data === "string"; }
Se provassimo ad usare questa definizione dentro l’if di concat, TypeScript non ne sarebbe troppo convinto:
function isString(data: string | number): boolean { return typeof data === "string"; } function concat(a: string | number, b: string | number): string { if (isString(a)) return a + b; // Operator '+' cannot be applied to types 'string | number' and 'string | number'. return String(a) + b; }
Possiamo chiarire a TypeScript che il booleano che esce da isString non è un booleano qualunque, ma la risposta alla domanda: “a è una stringa?”. In questo modo TypeScript può fare lo stesso type narrowing che fa nell’esempio iniziale:
function isString(data: string | number): data is string { return typeof data === "string"; }
Usando data is string come tipo di ritorno, stiamo qualificando isString come una guardia di tipo (in inglese: type guard), cioè una funzione che TypeScript può usare per fare restringimento su una variabile.
Il nome data è totalmente arbitrario; l’importante è che la keyword is sia usata sul parametro su cui agisce la guardia.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.