НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
⊗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
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить