Generyklar nima?
sobes.tech AI
AIdan javob
TypeScript'da generiklar, turli ma'lumot turlari bilan ishlay oladigan, lekin tur tahlilini xavfsizligini saqlab qoladigan komponentlar (funksiyalar, sinflar, interfeyslar) yaratishga imkon beradi. Ular yanada moslashuvchan va qayta ishlatiladigan kod yozishga yordam beradi, statik tur tahlilining afzalliklarini yo'qotmasdan. Eng oddiy misol — funksiyalarda generiklardan foydalanish va ularni argument sifatida o'tkazilgan bilan bir xil turga qaytarish.
// Har qanday turdagi argumentni qabul qiladigan va uni qaytaradigan funksiya
function identity<T>(arg: T): T {
return arg;
}
// Aniq tur bilan generikdan foydalanish - string
let outputString = identity<string>("matn"); // outputString ning turi string bo'ladi
// Avtomatik tur chiqarish bilan generikdan foydalanish - number
let outputNumber = identity(123); // outputNumber ning turi number bo'ladi
Generiklar sinflarda ham ishlatilishi mumkin:
// Har qanday turdagi elementlar bilan ishlaydigan sinf
class GenericBox<T> {
value: T;
constructor(initialValue: T) {
this.value = initialValue;
}
}
// String turidagi GenericBox misolini yaratish
let stringBox = new GenericBox<string>("salom");
// Boolean turidagi GenericBox misolini yaratish
let booleanBox = new GenericBox(true); // TypeScript turni chiqaradi
Va interfeyslar:
// Generik bilan interfeys
interface KeyValuePair<K, V> {
key: K;
value: V;
}
// Aniq turlarga ega interfeysdan foydalanish
let stringNumberPair: KeyValuePair<string, number> = { key: "yosh", value: 30 };
Generiklardan foydalanishning afzallari:
- Kodning qayta ishlatilishi: Bir struktura turli ma'lumot turlari bilan ishlatilishi mumkin.
- Tur xavfsizligi: Kompilyator turlarni tekshiradi va potentsial xatoliklarni oldini oladi.
- O'qilishi va saqlanishi: Kod yanada tushunarli bo'ladi, chunki komponent qanday turlarda ishlayotganligi aniq ko'rinadi.
Generiklar ko'pincha kutubxonalar va ramkalar, masalan React (komponent propslarini tiplash uchun), Redux (do'konni tiplash uchun), va ma'lumotlar to'plamlari bilan ishlashda keng qo'llaniladi.