Typové premenné v TypeScript

Pre lepšie pochopenie konceptu generík vytvorme našu prvú funkciu - funkciu-identitu. Taká funkcia vráti presne to, čo jej bolo odovzdané - s rovnakým typom.

Na začiatok napíšme varianty našej funkcie samostatne.

Napíšme funkciu, ktorá ako parameter prijíma číslo a vráti číslo:

typescriptfunction func(data: number): number {
  return data;
}

Teraz napíšme funkciu, ktorá ako parameter prijíma reťazec a vráti reťazec:

typescriptfunction func(data: string): string {
  return data;
}

Teraz povedzme, že chceme, aby toto všetko robila jedna funkcia. To znamená, že chceme vykonať zovšeobecnenie.

Na to použijeme typovú premennú, ktorá ukladá typ údajov. Takáto premenná sa deklaruje v lomených zátvorkách pred okrúhlymi zátvorkami s parametrami funkcie. Deklarujme takúto premennú, dajme jej meno T (môže byť ľubovoľné):

typescriptfunction func <T>(tu parametre) {
  return data;
}

Potom budeme mať k dispozícii premennú T, ktorú môžeme použiť na to, aby sme do nej uložili typ parametra, a potom ho určili ako návratový typ.

Určme nášmu parametru typ ako našu premennú:

typescriptfunction func <T>(data: T) {
  return data;
}

Výsledkom bude, že parameter môže byť odovzdaný v ľubovoľnom type, a tento typ sa uloží do našej premennej T.

Teraz použijeme hodnotu premennej T ako určenie výsledku funkcie:

typescriptfunction func <T>(data: T): T {
  return data;
}

Teraz bude výsledkom, že typ výsledku funkcie bude odvodený z typu parametra. Skontrolujme to.

Zavolajme funkciu s číslom:

typescriptconsole.log( func(3) );   // vypíše 3

Zavolajme funkciu s reťazcom:

typescriptconsole.log( func('x') ); // vypíše 'x'
Задание 1

Vytvorte funkciu, ktorá ako parameter prijíma buď dve čísla, alebo dva reťazce. Výsledkom funkcie by malo byť vrátenie súčtu parametrov.