⊗tsSpGnPTL 36 of 37 menu

Выкарыстанне тыпавых параметраў у абмежаваннях джэнерiкаў у 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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць