Middle
რა არის გენერიკები?
sobes.tech AI
პასუხი AI-სგან
TypeScript-ის გენერიკები (generics) საშუალებას აძლევს შექმნათ კომპონენტები (ფუნქციები, კლასები, ინტერფეისები), რომლებიც მუშაობენ სხვადასხვა მონაცემთა ტიპებთან, ამავდროულად შენარჩუნებული უსაფრთხოებით. ისინი מאפשרებენ დაწეროთ უფრო მოქნილი და გადამეორებადი კოდი, არ კარგავენ სტატიკური ტიპიზაციის უპირატესობებს. ყველაზე მარტივი მაგალითი — გენერიკების გამოყენება ფუნქციებში, რათა დაბრუნდეს იგივე ტიპი, რაც არგუმენტად არის გადაცემული.
// ფუნქცია, რომელიც იღებს ნებისმიერი ტიპის არგუმენტს და აბრუნებს მას
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 (საწყობის ტიპიზაცია), ასევე მონაცემთა კოლექციებთან მუშაობის დროს.