Sobes.tech
Middle

Genetiklər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

TypeScript-də generiklər müxtəlif məlumat tipləri ilə işləyə bilən, lakin tip təhlükəsizliyini qoruyan komponentlər (funksiyalar, sinflər, interfeyslər) yaratmağa imkan verir. Onlar daha çevik və təkrar istifadə oluna bilən kod yazmağa imkan verir, statik tipin üstünlüklərini itirmədən. Ən sadə nümunə funksiyalarda generiklərin istifadəsidir və verilmiş arqumentlə eyni tiplə geri qaytarır.

// Hər hansı tiplə arqument qəbul edən və onu geri qaytaran funksiya
function identity<T>(arg: T): T {
    return arg;
}

// Xüsusi tiplə generik istifadəsi - string
let outputString = identity<string>("sətir"); // outputString-in tipi string olacaq

// Avtomatik tiplə çıxarış ilə generik istifadəsi - number
let outputNumber = identity(123); // outputNumber-in tipi number olacaq

Generiklər sinflərdə də istifadə oluna bilər:

// Hər hansı tiplə elementlərlə işləyən sinif
class GenericBox<T> {
    value: T;
    constructor(initialValue: T) {
        this.value = initialValue;
    }
}

// String tiplə GenericBox nümunəsi yaratmaq
let stringBox = new GenericBox<string>("salam");
// Boolean tiplə GenericBox nümunəsi yaratmaq
let booleanBox = new GenericBox(true); // TypeScript tipi çıxaracaq

Və interfeyslərdə:

// Generiklərlə interfeys
interface KeyValuePair<K, V> {
    key: K;
    value: V;
}

// Xüsusi tiplərlə interfeys istifadəsi
let stringNumberPair: KeyValuePair<string, number> = { key: "yaş", value: 30 };

Generiklərin istifadəsinin üstünlükləri:

  • Kodun təkrar istifadəsi: Bir struktur müxtəlif məlumat tipləri ilə istifadə oluna bilər.
  • Tip təhlükəsizliyi: Kompilyator tipləri yoxlayır və potensial səhvləri qarşısını alır.
  • Oxunaqlılıq və saxlanma: Kod daha aydın olur, çünki komponentin hansı tiplərlə işlədiyi açıq şəkildə görünür.

Generiklər çox vaxt kitabxanalarda və çərçivələrdə istifadə olunur, məsələn React (komponentlərin prop tiplərini müəyyən etmək üçün), Redux (mağazanın tiplənməsi üçün), və məlumat kolleksiyaları ilə işləyərkən.