Funcții în TypeScript
TypeScript are propria sintaxă pentru a atribui tipuri parametrilor unei funcții și valorilor returnate de ea.
Această pagină se bazează pe funcțiile obișnuite din JavaScript, așa că asigură-te mai întâi că știi cum funcționează acelea.
Tipul returnat
Poți preciza tipul valorii pe care o returnează o funcție scriindu-l după lista de parametri.
Notă: Dacă nu scrii un tip returnat, TypeScript încearcă să îl deducă — ghicește tipul din valorile pe care le returnează funcția.
Exemplu
Secvența : number de după paranteze spune că getTime returnează un număr.
getTime adnotată să returneze number, al cărei corp returnează new Date().getTime(), cu un comentariu care explică adnotarea : number. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
// aici, `: number` specifică faptul că această funcție returnează un număr
function getTime(): number {
return new Date().getTime();
}
Tipul returnat void
Folosește tipul void pentru a spune că o funcție nu returnează nicio valoare.
Exemplu
void pentru o funcție care nu returnează nimic.
Scrie o funcție printHello adnotată ca returnând void, al cărei corp afișează în consolă „Salut!”. Doar declară funcția; nu o apela, astfel încât să nu se afișeze nimic.
Ieșire: program TypeScript și rezultatul capturat
function printHello(): void {
console.log('Salut!');
}
Parametri
Parametrii unei funcții primesc tipuri cu aceeași sintaxă ca declarațiile de variabile: două puncte și tipul, după nume.
Notă: Dacă un parametru nu are tip, TypeScript revine la any — cu excepția cazului în care poate găsi tipul în altă parte, așa cum se arată mai jos în secțiunile Parametri impliciți și Alias de tip.
Exemplu
multiply cu doi parametri de tip number, a și b, care returnează produsul lor, lăsând TypeScript să deducă tipul returnat. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
function multiply(a: number, b: number) {
return a * b;
}
Parametri opționali
În mod implicit, TypeScript tratează fiecare parametru ca fiind obligatoriu. Poți marca un parametru ca opțional adăugând ? după numele lui.
Exemplu
Semnul ? îl face pe c opțional, așa că add poate fi apelată cu doi sau trei argumente.
?.
Scrie o funcție add cu parametrii obligatorii de tip number a și b și un parametru opțional de tip number c, care returnează a + b + (c || 0), cu un comentariu care explică semnul ?. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
// operatorul `?` de aici marchează parametrul `c` ca fiind opțional
function add(a: number, b: number, c?: number) {
return a + b + (c || 0);
}
Parametri impliciți
Pentru un parametru cu o valoare implicită, scrie valoarea implicită după adnotarea de tip.
TypeScript poate deduce tipul parametrului și doar din valoarea implicită.
Exemplu
exponent are tipul number și ia implicit valoarea 10 atunci când nu se transmite nicio valoare.
pow cu un parametru value de tip number și un parametru exponent de tip number care ia implicit valoarea 10, returnând value ** exponent. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
function pow(value: number, exponent: number = 10) {
return value ** exponent;
}
Parametri numiți
Parametrii numiți — valori extrase dintr-un singur argument de tip obiect — primesc tipuri la fel ca parametrii obișnuiți: tipul se scrie după tiparul de destructurare.
Exemplu
divide care destructurează dividend și divisor dintr-un singur parametru de tip obiect, cu tipul { dividend: number, divisor: number }, și returnează dividend / divisor. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
function divide({ dividend, divisor }: { dividend: number, divisor: number }) {
return dividend / divisor;
}
Parametri rest
Un parametru rest adună toate argumentele suplimentare. Primește tip ca un parametru obișnuit, dar tipul trebuie să fie un tablou, pentru că un parametru rest este întotdeauna un tablou.
Exemplu
...rest are tipul number[], așa că fiecare argument suplimentar trebuie să fie un număr.
add cu parametrii a și b de tip number, plus un parametru rest ...rest de tip number[], care returnează a + b plus suma elementelor din rest, calculată cu reduce. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
function add(a: number, b: number, ...rest: number[]) {
return a + b + rest.reduce((p, c) => p + c, 0);
}
Alias de tip
Tipul unei funcții poate fi scris separat de funcția însăși, folosind un alias de tip.
Aceste tipuri arată ca niște funcții săgeată: parametrii în paranteze, apoi => și tipul returnat.
Exemplu
Pentru că negateFunction are tipul Negate, parametrul său value primește automat tipul number.
Negate pentru o funcție care primește un number și returnează un number, apoi atribuie funcția săgeată (value) => value * -1 unei constante negateFunction de tip Negate, cu un comentariu care precizează că value își primește tipul din alias. Exemplul doar declară funcția și nu afișează nimic.
Ieșire: program TypeScript și rezultatul capturat
type Negate = (value: number) => number;
// în această funcție, parametrul `value` primește automat tipul `number` din tipul `Negate`
const negateFunction: Negate = (value) => value * -1;