TypeScript: interface va type farqi

Assalamu Alaykum! Bugun biz Interface va Typening bazibir farqlarini (TypeScriptda) ko`rib chiqamiz :

Kengayish va birlashtirish

Interfeyslar bir birini kengaytira oladi ,typelar esa faqatgina birlashtirish orqali kengaytiriladi.

Interfeyslar boshqa interfeyslar orqali kengaytirilishi mumkin . Xo'sh qanday meros olish orqali , Meros olish(inheritance) — interfeyslar biri biridan meros ola oladi xuddi classlarga o'xshab farqli tomoni bir nomdagi bir necha interfeys elon qilish mumkin va ular birga yig'ilib boradi yana bir nechta interfeysdan bir vaqtda meros olish mumkin. Bu ularga bir necha oddiy interfeyslarni birlashtirish orqali murrakkab obyekt shaklidagi interfeys yaratishga imkon beradi. Masalan :

Union (faqat turlar uchun)

Turlar mantiqiy operatorlar orqali yangi oddiy typelardan tashkil topgan typelar yarata oladi.

Turlar | va & operatorlaridan foydalanib yangi turlar yarata oladi :

| - OR(yoki) operator birortasi qoniqtirsa bo`lid pastdagi misolda status qiymati on yoki off bo'lishi kerak

& - AND(va) operatori har ikkala tomon bajarilishi kerak

Mapped turlar

Turlar mapped turlar bilan birgalikda ishlatsa bo`ladi. va ular faqatgina turlar bilan ishlaydi

Mapped turlar bor turning propertylarini aylanish orqali o'zgartirishga imkon beradigan TypeScriptdagi xususiyat . Masalan :

type Person = {
  name: string;
  age: number;
}
type ReadonlyPerson = Readonly<Person>;

Bu misolda , Readonly mapped type orqali Person, bir xil bo'lgan yangi tur yaratadi , ammo barcha propertylari readonlykalit so'zi bilan .

Xulosa

Umuman olganda, interfeyslar va turlar TypeScript-da biroz boshqacha foydalanish holatlariga ega. Interfeyslar ko'pincha obyektlar va funksiyalarning shaklini aniqlash uchun ishlatiladi, turlar esa yangi turlar yaratish yoki birlashmalar va kesishmalar yordamida murakkabroq turlarni aniqlash uchun ishlatiladi. Biroq, ikkala interfeys va turlar ko’p hollarda bir-birining o’rnida ishlatilishi mumkin va bu ko’pincha shaxsiy tanlov yoki jamoaviy kelishuvlarga bog'liq.

Xato va kamchiliklar uchun uzr !!!