Ce face arrow functions cu tipuri
O arrow function se scrie (parametri) => rezultat. Tipurile se pun la fel ca la function: după fiecare parametru și, opțional, după paranteză pentru rezultat: (a: number): number => a * 2.
Avantajul mare este tipizarea contextuală: când dai o funcție săgeată unei funcții care știe deja ce primește (map, filter, addEventListener), parametrii primesc tipul automat și nu trebuie scriși. La fel când variabila are deja un tip de funcție.
Spre deosebire de function, o funcție săgeată nu are propriul this; folosește this-ul din locul unde a fost scrisă. De aceea e potrivită pentru callback-uri în metodele claselor (vezi this în funcții). Dacă returnezi direct un obiect, pune-l în paranteze: () => ({ x: 1 }).
Exemple
Exemplul 1: Tipuri scrise și tipuri deduse din context
În map și filter, parametrul e este automat Elev.
interface Elev {
nume: string;
nota: number;
}
const elevi: Elev[] = [
{ nume: "Ana", nota: 9 },
{ nume: "Mihai", nota: 4 },
{ nume: "Ioana", nota: 10 },
];
const promovat = (e: Elev): boolean => e.nota >= 5;
const nume = elevi.filter(promovat).map((e) => e.nume.toUpperCase());
const total = elevi.reduce((s, e) => s + e.nota, 0);
console.log(nume, total);
Rezultat
[ 'ANA', 'IOANA' ] 23
Exemplul 2: Funcție care returnează o funcție
reducere(10) creează o funcție nouă care aplică 10% reducere.
const reducere = (procent: number) => (pret: number): number =>
Math.round(pret * (100 - procent)) / 100;
const reducere10 = reducere(10);
const reducere25 = reducere(25);
console.log(reducere10(80), reducere25(80));
const creeaza = (nume: string) => ({ nume, creat: "2026-10-19" });
console.log(creeaza("Ana"));
Rezultat
72 60
{ nume: 'Ana', creat: '2026-10-19' }
Exemplul 3: Parametru fără tip și fără context
const dublu = (x) => x * 2;
console.log(dublu(4));
Eroarea afișată de tsc
exemplu.mts(1,16): error TS7006: Parameter 'x' implicitly has an 'any' type.
Greșeli frecvente
- Scrii
() => { nume: "Ana" }și primeștiundefined: acoladele sunt corpul funcției. Pune obiectul în paranteze. - Folosești o funcție săgeată ca metodă într-un obiect literal și te aștepți ca
thissă fie obiectul. Folosește sintaxa de metodămetoda() { ... }.
Comenzi înrudite
funcții cu tipuri: Pui tipuri pe parametrii și pe rezultatul funcțiilor; fiecare apel este verificat la compilare.this în funcții: Primul parametru numit this declară pe ce obiect trebuie apelată funcția; tsc verifică apelurile.inferența tipurilor: TypeScript deduce singur tipul variabilelor și al rezultatelor din valorile pe care le scrii, fără adnotări.generics (<T>): Parametri de tip: o funcție sau clasă scrisă o dată, care funcționează cu orice tip și păstrează tipul exact.