⊗tsSpGnPTL 36 of 37 menu

Použití typových parametrů v omezeních generik v TypeScriptu

TypeScript také umožňuje deklaraci jednoho typového parametru, který bude omezen jiným typovým parametrem. To je nezbytné, když je potřeba kopírovat vlastnosti z jednoho objektu do druhého a zároveň se pojistit proti tomu, že nepředáme nadbytečnou vlastnost.

Podívejme se na následující příklad. Znovu přejděme k funkci myFunc, která určuje délku proměnné:

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

Nyní však chceme, aby tato funkce pracovala pouze s těmi typy, které mají vlastnost length. K tomu vytvoříme rozhraní ILength, kterému nastavíme vlastnost length číselného typu:

interface ILength { length: number; }

Dále v naší funkci nastavme generický typ, který dědí od ILength pomocí klíčového slova extends:

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

Takhle vypadá náš úplný kód:

interface ILength { length: number; } function myFunc <T extends ILength> (data: T): T { console.log(data.length); return data; }

Pojďme otestovat funkčnost naší funkce a najděme délku řetězce:

console.log(myFunc('abcde'));

Výsledek provedeného kódu:

5 'abcde'

A nyní předáme do parametru pole:

console.log(myFunc(['a', 'b', 'c']));

Výsledek provedeného kódu:

3 [ 'a', 'b', 'c' ]
Č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