⊗tsSpGnPTL 36 of 37 menu

Tüübi parameetrite kasutamine TypeScripti generikumite piirangutes

TypeScriptis on ka võimalik deklareerida üks tüübi parameeter, mis on piiratud teise tüübi parameetriga. See on vajalik, kui tuleb kopeerida omadusi ühest objektist teise, samal ajal kaitstes end selle eest, et me ei edastaks liigset omadust.

Vaatame järgmist näidet. Pöördume tagasi funktsiooni myFunc juurde, mis määrab muutuja pikkuse:

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

Kuid nüüd tahame, et see funktsioon töötaks ainult nende tüüpidega, millel on omadus length. Selleks loome liidese ILength, millele määrame omaduse length numbrilise tüübiga:

interface ILength { length: number; }

Järgmisena määrame oma funktsioonis generiseeritud tüübi, mis pärineb ILength-st kasutades võtmesõna extends:

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

Meie täielik kood näeb välja selline:

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

Kontrollime oma funktsiooni tööd ja leiame stringi pikkuse:

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

Koodi täitmise tulemus:

5 'abcde'

Ja nüüd edastame parameetrina massiivi:

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

Koodi täitmise tulemus:

3 [ 'a', 'b', 'c' ]
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu