TypeScriptда типик ўзгарувчилар
Женерик тушунчасини яхширок тушуниш учун келайлик, биринчи функциямизни - аёллик функцисяси яратайлик. Бундай функцися ўзига берилган нарсани айнан ўша типи билан қайтаради.
Келайлик, аввалбошда функциямизнинг вариантларини алаҳида ёзайлик.
Параметри сифатида сон қабул қиладиган ва сон қайтарадиган функцияни ёзайлик:
function func(data: number): number {
return data;
}
Энди параметри сифатида сатр қабул қиладиган ва сатр қайтарадиган функцияни ёзайлик:
function func(data: string): string {
return data;
}
Энди биз буларнинг ҳаммасини битта функция бажаришини хоҳлаймиз. Яъни биз умумийлаштириш амалга оширмоқчимиз.
Бунинг учун биз типик
ўзгарувчи дан фойдаланамиз, у маълумот турларини
ўзида сақлайди. Бундай ўзгарувчи функция параметрлари
билан турғизғуч қавслар олдидаги бурчакли қавсларда
эълон қилинади. Келайлик, уни T ном билан
эълон қилайлик (исталган ном бериш мумкин):
function func <T>(бу ерда параметрлар) {
return data;
}
Шундан сўнг бизда T ўзгарувчиси пайдо бўлади,
уни параметр типини қўйиш учун ишлатиш мумкин бўлади, сўнгра
уни қайтариладиган қиймат сифатида кўрсатиш мумкин.
Параметримизга турни ўзгарувчимиз шаклида кўрсатайлик:
function func <T>(data: T) {
return data;
}
Натижада параметр қандайдир турда ўтказилиши мумкин бўлади,
ва бу тур бизнинг T ўзгарувчимизда сақланади.
Энди T ўзгарувчисининг қийматини функция натижасини
кўрсатиш учун ишлатайлик:
function func <T>(data: T): T {
return data;
}
Энди функция натижасининг тури параметр туридан олинади. Келайлик, текширайлик.
Функцияни сон билан чақирайлик:
console.log( func(3) ); // 3 ни чиқаради
Функцияни сатр билан чақирайлик:
console.log( func('x') ); // 'x' ни чиқаради
Параметри сифатида ёки иккита сон, ёки иккита сатр қабул қиладиган функция яратинг. Функция ўз натижаси сифатида параметрлар йиғиндисини қайтариши керак.