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:

typescriptfunction 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:

typescriptfunction 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):

typescriptfunction 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:

typescriptfunction 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:

typescriptfunction 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:

typescriptconsole.log( func(3) );   // va afișa 3

Să apelăm funcția cu un șir de caractere:

typescriptconsole.log( func('x') ); // va afișa 'x'
Задание 1

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.