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'
Ստեղծեք ֆունկցիա, որն ընդունում է որպես պարամետր կամ երկու թիվ, կամ երկու տող: Ֆունկցիան իր արդյունքում պետք է վերադարձնի պարամետրերի գումարը: