НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
menu

Перегрузки функций в TypeScript

Иногда встречаются функции, которые возвращают значения, тип которых зависит от переданных параметров. Для этого в TypeScript используют перегрузку функций. Она позволяет указать разные варианты сигнатур функции.

Давайте посмотрим на примере. Пусть у нас есть функция, которая разбивает символы строки в массив букв:

function splitStr(str: string): string[] { return str.split(''); }

Пусть у нас также есть функция, которая разбивает символы числа в массив цифр:

function splitNum(num: number): number[] { let str: string = String(num); let arr: string[] = str.split(''); return arr.map(elem => +elem); }

Давайте объединим обе функции в одну. Новая функция в зависимости от типа параметра должна возвращать или массив чисел или массив строк.

Используем перегрузку, чтобы объявить различные сигнатуры нашей функции:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { // реализация обоих сигнатур }

Напишем теперь реализацию функции. В ее коде мы должны условием определить, какая из сигнатур функции сработала, и в зависимости от этого запустить нужный код с результатом нужного типа:

function splitVal(val: number): number[]; function splitVal(val: string): string[] { if (typeof val === 'string') { return val.split(''); } else { let str: string = String(val); let arr: string[] = str.split(''); return arr.map((elem: string): number => +elem); } }

В отличие от других языков, в TypeScript в перегрузке создается одна функция. Нельзя сделать несколько функций с одним именем, но разными сигнатурами.

Напишите функцию, которая будет возвращать или изменять текст DOM элемента. Она должна работать следующим образом:

text('#elem', 'text'); // установит текст text('#elem'); // вернет текущий текст
Русский
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить