⊗tsSpGnPTL 36 of 37 menu

Tyypillisten parametrien käyttö geneeristen rajoitusten TypeScriptissä

TypeScriptissä on myös mahdollisuus määritellä yksi tyypillinen parametri, jota rajoitetaan toisella tyypillisellä parametrilla. Tämä on tarpeen, kun omistuuksia on kopioitava yhdestä objektista toiseen, samalla varmistuen, että emme välitä ylimääräisiä ominaisuuksia.

Tarkastellaan seuraavaa esimerkkiä. Palataan takaisin funktioon myFunc, joka määrittelee muuttujan pituuden:

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

Nyt kuitenkin haluamme, että tämä funktio toimii vain niiden tyyppien kanssa, joilla on ominaisuus length. Tehdään tätä varten rajapinta ILength, ja asetetaan sille ominaisuus length numeeriseen tyyppiin:

interface ILength { length: number; }

Seuraavaksi asetamme funktiossamme yleisen tyypin, joka perii ILength:n avainsanan extends kautta:

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

Tältä näyttää täydellinen koodimme:

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

Testataan funktiomme toimintaa ja etsitään merkkijonon pituus:

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

Suoritetun koodin tulos:

5 'abcde'

Ja nyt välitetään parametrina taulukko:

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

Suoritetun koodin tulos:

3 [ 'a', 'b', 'c' ]
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää