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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне