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

  1. Inferència de Tipus en Variables
  2. Inferència de Tipus en Funcions
  3. Inferència de Tipus en Arrays i Objectes
  4. Contextual Typing

  1. 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.

  1. 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.

  1. 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.

  1. 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?

let greeting = "Hello, World!";
// Tipus inferit: string

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?

function multiply(a: number, b: number) {
    return a * b;
}
// Tipus de retorn inferit: number

Exercici 3

Declara un array colors amb els valors "red", "green" i "blue". Quin tipus infereix TypeScript per a aquest array?

let colors = ["red", "green", "blue"];
// Tipus inferit: string[]

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?

function logMessage(message) {
    console.log(message);
}
// Tipus inferit: any

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.

© Copyright 2024. Tots els drets reservats