Typové proměnné v TypeScriptu
Pro lepší pochopení konceptu generik vytvořme naši první funkci - funkci-identitu. Taková funkce vrací přesně to, co jí bylo předáno - se stejným typem.
Nejprve napišme varianty naší funkce samostatně.
Napišme funkci, která parametrem přijímá číslo a vrací číslo:
function func(data: number): number {
return data;
}
Nyní napišme funkci, která parametrem přijímá řetězec a vrací řetězec:
function func(data: string): string {
return data;
}
Nyní chceme, aby toto vše dělala jedna funkce. To znamená, že chceme provést zobecnění.
K tomu použijeme typovou proměnnou,
která si uchovává typ dat. Taková proměnná se deklaruje
v lomených závorkách před kulatými závorkami
s parametry funkce. Pojďme deklarovat
takovou proměnnou a dát jí jméno T
(libovolné jméno je možné):
function func <T>(zde parametry) {
return data;
}
Poté budeme mít k dispozici proměnnou T,
kterou lze použít k uložení typu parametru a následně
jeho určení jako návratového typu.
Určeme našemu parametru typ ve formě naší proměnné:
function func <T>(data: T) {
return data;
}
Výsledkem bude, že parametr může být předán
v libovolném typu a tento typ se uloží do naší
proměnné T.
Nyní použijeme hodnotu proměnné T
k určení výsledku funkce:
function func <T>(data: T): T {
return data;
}
Nyní bude výsledkem, že typ výsledku funkce bude odvozen z typu parametru. Pojďme to ověřit.
Zavolejme funkci s číslem:
console.log( func(3) ); // vypíše 3
Zavolejme funkci s řetězcem:
console.log( func('x') ); // vypíše 'x'
Vytvořte funkci, která parametrem přijímá buď dvě čísla, nebo dva řetězce. Výsledkem funkce by měl být součet parametrů.