Variabile de tip în TypeScript
Pentru o mai bună înțelegere a conceptului de generice să ne creăm prima funcție - funcția-identitate. O astfel de funcție returnează exact ceea ce i-a fost transmis - cu același tip.
Să scriem mai întâi variantele funcției noastre separat.
Să scriem o funcție care acceptă ca parametru un număr și returnează un număr:
function func(data: number): number {
return data;
}
Acum să scriem o funcție care acceptă ca parametru un șir de caractere și returnează un șir de caractere:
function func(data: string): string {
return data;
}
Să presupunem acum că vrem să facem astfel încât toate acestea să fie făcute de o singură funcție. Adică noi vrem să efectuăm generalizarea.
Pentru aceasta vom folosi o variabilă de tip,
care păstrează în sine tipul de date. O astfel de variabilă este declarată
în paranteze unghiulare înaintea parantezelor rotunde
cu parametrii funcției. Să declarăm
o astfel de variabilă, dându-i numele T
(poate fi orice):
function func <T>(aici parametrii) {
return data;
}
După aceasta, vom avea variabila T,
care poate fi folosită pentru a
pune în ea tipul parametrului, apoi
îl putem indica ca tip de returnare
a valorii.
Să indicăm parametrului nostru tipul sub forma variabilei noastre:
function func <T>(data: T) {
return data;
}
Se va obține că parametrul poate fi transmis
în orice tip, iar acest tip va fi salvat în variabila noastră T.
Acum să folosim valoarea variabilei T
ca indicație a rezultatului funcției:
function func <T>(data: T): T {
return data;
}
Acum se va obține că tipul rezultatului funcției va fi obținut din tipul parametrului. Să verificăm.
Să apelăm funcția cu un număr:
console.log( func(3) ); // va afișa 3
Să apelăm funcția cu un șir de caractere:
console.log( func('x') ); // va afișa 'x'
Realizați o funcție care acceptă ca parametru fie două numere, fie două șiruri de caractere. Ca rezultat, funcția ar trebui să returneze suma parametrilor.