TypeScript-ում տիպային փոփոխականները

Ջեներիկների հայեցակարգը ավելի լավ հասկանալու համար եկեք ստեղծենք մեր առաջին ֆունկցիան - նույնականության ֆունկցիա: Այդպիսի ֆունկցիան վերադարձնում է ճիշտ այն, ինչ նրան փոխանցվել է` նույն տիպով:

Եկեք սկզբից գրենք մեր ֆունկցիայի տարբերակները առանձին:

Գրենք ֆունկցիա, որն ընդունում է թիվ որպես պարամետր և վերադարձնում է թիվ:

typescriptfunction func(data: number): number {
  return data;
}

Այժմ գրենք ֆունկցիա, որն ընդունում է տող որպես պարամետր և վերադարձնում է տող:

typescriptfunction func(data: string): string {
  return data;
}

Ենթադրենք, հիմա մենք ուզում ենք, որ այս ամենը կատարի մեկ ֆունկցիա: Այսինքն մենք ուզում ենք կատարել ընդհանրացում:

Դրա համար մենք օգտագործում ենք տիպային փոփոխական, որն իր մեջ պահպանում է տվյալների տեսակը: Նման փոփոխականը հայտարարվում է ֆունկցիայի պարամետրերով կլոր փակագծերից առաջ գտնվող անկյունային փակագծերում: Եկեք հայտարարենք նման փոփոխական` նրան տալով T անունը (կարելի է ցանկացած):

typescriptfunction func <T>(այստեղ պարամետրեր) {
  return data;
}

Դրանից հետո մենք կունենանք T փոփոխական, որը կարող ենք օգտագործել` դրա մեջ դնելու պարամետրի տեսակը, ապա նշել այն որպես վերադարձվող արժեքի տեսակ:

Նշենք մեր պարամետրի տեսակը որպես մեր փոփոխականի տեսակ:

typescriptfunction func <T>(data: T) {
  return data;
}

Ստացվում է, որ պարամետրը կարող է փոխանցվել ցանկացած տեսակով, և այդ տեսակը կպահպանվի մեր T փոփոխականում:

Այժմ օգտագործենք T փոփոխականի արժեքը ֆունկցիայի արդյունքի տեսակը նշելու համար:

typescriptfunction func <T>(data: T): T {
  return data;
}

Այժմ ստացվում է, որ ֆունկցիայի արդյունքի տեսակը կստացվի պարամետրի տեսակից: Եկեք ստուգենք:

Կանչենք ֆունկցիան թվով:

typescriptconsole.log( func(3) );   // կարտածի 3

Կանչենք ֆունկցիան տողով:

typescriptconsole.log( func('x') ); // կարտածի 'x'
Задание 1

Ստեղծեք ֆունկցիա, որն ընդունում է որպես պարամետր կամ երկու թիվ, կամ երկու տող: Ֆունկցիան իր արդյունքում պետք է վերադարձնի պարամետրերի գումարը: