⊗tsSpGnPTL 36 of 37 menu

Używanie typowych parametrów w ograniczeniach generyków w TypeScript

W TypeScript istnieje również możliwość deklarowania jednego parametru typowego, który będzie ograniczony przez inny parametr typowy. Jest to konieczne, gdy musimy kopiować właściwości z jednego obiektu do drugiego, jednocześnie zabezpieczając się przed tym, że nie przekażemy nadmiarowej właściwości.

Przyjrzyjmy się następującemu przykładowi. Wróćmy do funkcji myFunc, określającej długość zmiennej:

function myFunc <T> (data: T): T { console.log(data.length); // błąd return data; }

Teraz jednak chcemy, aby ta funkcja działała tylko z tymi typami, które mają właściwość length. W tym celu utwórzmy interfejs ILength, któremu przypiszemy właściwość length typu liczbowego:

interface ILength { length: number; }

Następnie w naszej funkcji ustawmy typ generyczny, który dziedziczy po ILength poprzez słowo kluczowe extends:

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

Oto jak wygląda nasz pełny kod:

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

Sprawdźmy działanie naszej funkcji i znajdźmy długość ciągu znaków:

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

Wynik wykonanego kodu:

5 'abcde'

A teraz przekażmy do parametru tablicę:

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

Wynik wykonanego kodu:

3 [ 'a', 'b', 'c' ]
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć