Introducció
La inferència de tipus és una característica poderosa de TypeScript que permet al compilador deduir automàticament els tipus de les variables, funcions i altres estructures de codi sense necessitat d'anotacions explícites. Aquesta funcionalitat fa que el codi sigui més net i menys verbós, alhora que manté la seguretat de tipus.
Conceptes Clau
- Inferència de Tipus en Variables
- Inferència de Tipus en Funcions
- Inferència de Tipus en Arrays i Objectes
- Contextual Typing
- Inferència de Tipus en Variables
Quan declares una variable i li assignes un valor, TypeScript infereix el tipus de la variable basant-se en el valor assignat.
Exemple
let message = "Hello, TypeScript!"; // TypeScript infereix que 'message' és de tipus 'string' let count = 42; // TypeScript infereix que 'count' és de tipus 'number' let isActive = true; // TypeScript infereix que 'isActive' és de tipus 'boolean'
Explicació
En els exemples anteriors, no hem especificat explícitament els tipus de les variables message
, count
i isActive
. TypeScript dedueix automàticament els tipus basant-se en els valors assignats.
- Inferència de Tipus en Funcions
TypeScript també pot inferir els tipus de retorn de les funcions basant-se en el valor retornat.
Exemple
function add(a: number, b: number) { return a + b; // TypeScript infereix que el tipus de retorn és 'number' } const result = add(5, 10); // 'result' és de tipus 'number'
Explicació
En aquest exemple, la funció add
no té una anotació de tipus de retorn explícita. TypeScript infereix que el tipus de retorn és number
perquè la funció retorna la suma de dos números.
- Inferència de Tipus en Arrays i Objectes
TypeScript pot inferir els tipus dels elements d'un array o les propietats d'un objecte basant-se en els valors inicials.
Exemple
let numbers = [1, 2, 3, 4, 5]; // TypeScript infereix que 'numbers' és de tipus 'number[]' let person = { name: "John", age: 30 }; // TypeScript infereix que 'person' és de tipus '{ name: string; age: number; }'
Explicació
En aquest exemple, TypeScript infereix que numbers
és un array de números (number[]
) i que person
és un objecte amb una propietat name
de tipus string
i una propietat age
de tipus number
.
- Contextual Typing
El "contextual typing" és un tipus d'inferència de tipus on el tipus es dedueix basant-se en el context en què s'utilitza una expressió.
Exemple
window.onmousedown = function(mouseEvent) { console.log(mouseEvent.button); // TypeScript infereix que 'mouseEvent' és de tipus 'MouseEvent' };
Explicació
En aquest exemple, TypeScript infereix que el paràmetre mouseEvent
de la funció és de tipus MouseEvent
perquè la funció s'assigna a window.onmousedown
, que espera una funció amb un paràmetre de tipus MouseEvent
.
Exercicis Pràctics
Exercici 1
Declara una variable greeting
i assigna-li el valor "Hello, World!"
. Quin tipus infereix TypeScript per a aquesta variable?
Exercici 2
Escriu una funció multiply
que prengui dos paràmetres a
i b
de tipus number
i retorni el seu producte. Quin tipus de retorn infereix TypeScript?
Exercici 3
Declara un array colors
amb els valors "red"
, "green"
i "blue"
. Quin tipus infereix TypeScript per a aquest array?
Exercici 4
Escriu una funció logMessage
que prengui un paràmetre message
i el mostri per consola. Quin tipus infereix TypeScript per al paràmetre message
?
Resum
La inferència de tipus és una característica que permet a TypeScript deduir automàticament els tipus de les variables, funcions i altres estructures de codi. Això fa que el codi sigui més net i menys verbós, alhora que manté la seguretat de tipus. Hem vist com TypeScript infereix els tipus en variables, funcions, arrays, objectes i en contextos específics. Practicar la inferència de tipus pot ajudar-te a escriure codi més eficient i llegible.
Curs de TypeScript
Mòdul 1: Introducció a TypeScript
- Què és TypeScript?
- Configuració de l'entorn de TypeScript
- Tipus bàsics
- Anotacions de tipus
- Compilació de TypeScript
Mòdul 2: Treballant amb Tipus
Mòdul 3: Tipus Avançats
Mòdul 4: Funcions i Mòduls
- Tipus de Funció
- Paràmetres Opcional i per Defecte
- Paràmetres Rest
- Mòduls i Espais de Noms
- Decoradors
Mòdul 5: Programació Asíncrona
Mòdul 6: Eines i Millors Pràctiques
- Linting i Formatació
- Proves de Codi TypeScript
- TypeScript amb Webpack
- TypeScript amb React
- Millors Pràctiques