⊗tsSpGnIms 35 of 37 menu

Omezení generik v TypeScriptu

V jedné z předchozích lekcí jsme vytvářeli funkci generického typu, která měla vypisovat délku parametru předaného do ní. Při kompilaci nám však byla vypsána chyba, protože ne všechny typy mohou mít délku:

function myFunc < T > (data: T): T { console.log(data.length); // chyba return data; }

V tom případě jsme situaci napravili změnou generického typu na typ generického pole. Ale v TypeScriptu existuje možnost vytvořit omezení generik. K tomu v lomených závorkách, za proměnnou T napíšeme klíčové slovo extends. Za ním do složených závorek zapíšeme novou proměnnou str řetězcového typu. Zbytek kódu funkce zůstane bez změn:

function myFunc <T extends {str: string}> (data: T): void { console.log(data.str.length); }

Vychází to tak, že generický typ dědí typ proměnné str, uvedené ve složených závorkách. Nyní ověřme funkci naší funkce a vytvořme proměnnou myStr, odkazující na typ str, a nastavme jí hodnotu ve složených závorkách:

let myStr: {str: string} = {str: 'abcde'};

Zavolejme funkci myFunc, nezapomeňme znovu uvést její typ a předejme proměnnou myStr jako parametr:

myFunc <{str: string}> (myStr);

Na základě příkladu probraného v lekci nastavte funkci pro nalezení délky číselného pole.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout