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:
function func(data: number): number {
return data;
}
Teraz napíšme funkciu, ktorá ako parameter prijíma reťazec a vráti reťazec:
function 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é):
function 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ú:
function 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:
function 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:
console.log( func(3) ); // vypíše 3
Zavolajme funkciu s reťazcom:
console.log( func('x') ); // vypíše 'x'
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.