TypeScript да функцияларнинг қайта юкланishi
Баъзан параметрларнинг турларига қараб турли турдаги қийматлар қайтарадиган функциялар учрайди. Бунинг учун 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 элементнинг матнини қайтарадиган ёки ўзгартирадиган функция ёзинг. У quyidagicha ишлаши керак:
text('#elem', 'text'); // матнни ўрнатади
text('#elem'); // жорий матнни қайтаради