⊗tsSpGnPTL 36 of 37 menu

Përdorimi i Parametrave Tipike në Kufizimet e Gjenerikëve në TypeScript

Gjithashtu në TypeScript ekziston mundësia e deklarimit të një parametri tipik, i cili do të kufizohet nga një parametër tjetër tipik. Kjo është e nevojshme kur është e nevojshme të kopjohen vetitë nga një objekt në një tjetër, duke u siguruar njëkohësisht që të mos kalojmë veti të panevojshme.

Le të shqyrtojmë shembullin e mëposhtëm. Përsëri le t'i kthehemi funksionit myFunc, i cili përcakton gjatësinë e një variable:

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

Sidoqoftë, tani ne duam që ky funksion të punojë vetëm me ato tipe, të cilat kanë vetinë length. Për këtë, le të krijojmë interfaqen ILength, së cilës i caktojmë vetinë length të tipit numerik:

interface ILength { length: number; }

Më pas, në funksionin tonë le të përcaktojmë një tip gjenerik, i cili trashëgon nga ILength përmes fjalës kyçe extends:

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

Kështu duket kodi ynë i plotë:

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

Le të kontrollojmë funksionimin e funksionit tonë dhe të gjejmë gjatësinë e stringut:

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

Rezultati i kodit të ekzekutuar:

5 'abcde'

Dhe tani le t'i kalojmë si parameter një array:

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

Rezultati i kodit të ekzekutuar:

3 [ 'a', 'b', 'c' ]
Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo