Намудҳои тағирёбанда дар 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'-ро мебарорад
Функсияеро созед, ки параметр ё ду рақам, ё ду сатрро қабул мекунад. Натиҷаи худ функсия бояд ҷамъи параметрҳоро баргардонад.