⊗tsSpGnPTL 36 of 37 menu

Използване на типови параметри в ограниченията на дженерици в TypeScript

Също така в TypeScript има възможност за деклариране на един типови параметър, който ще бъде ограничен от друг типови параметър. Това е необходимо, когато трябва да се копират свойства от един обект в друг, като същевременно се предпазим от това, да не предадем излишно свойство.

Нека разгледаме следния пример. Отново се върнем към функцията myFunc, определяща дължината на променлива:

function myFunc <T> (data: T): T { console.log(data.length); // грешка return data; }

Въпреки това сега искаме тази функция да работи само с тези типове, при които има свойство length. За това ще направим интерфейс ILength, на който зададем свойство length от числов тип:

interface ILength { length: number; }

След това в нашата функция задаваме обобщен тип, който наследява от ILength чрез ключовата дума extends:

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

Ето как изглежда пълният ни код:

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

Нека проверим работата на нашата функция и намерим дължината на низ:

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

Резултат от изпълнения код:

5 'abcde'

А сега да предадем в параметър масив:

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

Резултат от изпълнения код:

3 [ 'a', 'b', 'c' ]
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне