Ի՞նչ են գեներիկաները։
sobes.tech AI
Պատասխան AI-ից
Ջեներիկները (generics) TypeScript-ում թույլ են տալիս ստեղծել կոմպոնենտներ (ֆունկցիաներ, դասեր, ինտերֆեյսներ), որոնք կարող են աշխատել տարբեր տվյալների տիպերով՝ միաժամանակ պահպանելով տիպային անվտանգության ապահովումը: Նրանք թույլ են տալիս գրել ավելի ճկուն և վերաօգտագործվող կոդ, չկորցնելով ստատիկ տիպավորման առավելությունները: Ամենահեշտ օրինակն է՝ դженերիկների օգտագործումը ֆունկցիաներում՝ նույն տիպի վերադարձնելու համար, ինչ տիպը փոխանցվել է որպես արգումենտ:
// Ֆունկցիա, որը ընդունում է ցանկացած տիպի արգումենտ և վերադարձնում է այն
function identity<T>(arg: T): T {
return arg;
}
// Դժգույն օգտագործում կոնկրետ տիպով՝ string
let outputString = identity<string>("տող"); // outputString-ի տիպը կլինի string
// Դժգույն օգտագործում ավտոմատ տիպի արտահայտմամբ՝ number
let outputNumber = identity(123); // outputNumber-ի տիպը կլինի number
Դженերիկները կարելի է օգտագործել նաև դասերում:
// Դաս, որը աշխատում է ցանկացած տիպի էլեմենտների հետ
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// Ստեղծում ենք String տիպի GenericBox օրինակ
let stringBox = new GenericBox<string>("հայերեն");
// Ստեղծում ենք boolean տիպի GenericBox օրինակ
let booleanBox = new GenericBox(true); // TypeScript-ը կարտահայտի տիպը
Եվ ինտերֆեյսներում:
// Ինտերֆեյս՝ դженերիկով
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Կիրառում ենք կոնկրետ տիպերով
let stringNumberPair: KeyValuePair<string, number> = { key: "տարիք", value: 30 };
Դժգույնների օգտագործման առավելությունները՝
- Կոդի վերաօգտագործում: Միևնույն կառուցվածքը կարող է օգտագործվել տարբեր տիպերի տվյալների հետ:
- Տիպային անվտանգության ապահովում: Կոմպիլյատորը ստուգում է տիպերը՝ նախքան կոդը գործարկելը՝ կանխելով հնարավոր սխալները:
- Կարդալելիություն և սպասարկում: Կոդը ավելի հստակ է՝ պարզ երևում է, թե ինչ տիպերով է աշխատում կոմպոնենտը:
Դженերիկները հաճախ օգտագործվում են գրադարաններում և ֆրեյմվորկներում՝ React (պրոպսների տիպավորելու համար), Redux (ստորին տիպավորման համար), ինչպես նաև տվյալների հավաքածուների աշխատանքի ժամանակ։