Programming TypeScript


Turlar o'rtasidagi munosabatlar


Download 1.81 Mb.
bet92/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   88   89   90   91   92   93   94   95   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

Turlar o'rtasidagi munosabatlar


Keling, TypeScript-dagi turdagi munosabatlarni batafsil ko'rib chiqishdan boshlaylik.

Subtiplar va supertiplar


18-betdagi "Turlar haqida gapirish" da tayinlash haqida bir oz gaplashdik . Endi siz TypeScript taqdim etayotgan turlarning ko‘pini ko‘rganingizdan so‘ng biz yuqoridan boshlab chuqurroq sho‘ng‘ishimiz mumkin: quyi tur nima?
Pastki turi

Agar sizda ikkita A va B turi mavjud bo'lsa va B A ning pastki turi bo'lsa , unda siz B dan A talab qilinadigan har qanday joyda xavfsiz foydalanishingiz mumkin ( 6-1-rasm ).

6-1-rasm. B - A ning kichik turi
3-bobning boshida 3-1-rasmga nazar tashlasangiz , TypeScript-ga o'rnatilgan subtip munosabatlari nima ekanligini ko'rasiz. Masalan:

  • Massiv - Ob'ektning kichik turi.

  • Tuple - massivning kichik turi.

  • har qandayning kichik turidir .

  • hech qachon hamma narsaning kichik turi emas.

  • Hayvonni kengaytiradigan Qush sinfi bo'lsa , u holda Qush Hayvonning kichik turidir .

Men quyi tur uchun bergan ta'rifdan kelib chiqadiki, bu:

  • Ob'ekt kerak bo'lgan har qanday joyda siz massivdan ham foydalanishingiz mumkin.

  • Massiv kerak bo'lgan joyda siz Tupledan ham foydalanishingiz mumkin.

  • Sizga kerak bo'lgan har qanday joyda siz Ob'ektdan ham foydalanishingiz mumkin.

  • hech qachon hech qanday joyda foydalanishingiz mumkin .

  • Hayvon kerak bo'lgan joyda siz Qushdan ham foydalanishingiz mumkin .

Siz taxmin qilganingizdek, supertip pastki turga qarama-qarshidir.
Supertip

Agar sizda ikkita A va B turi mavjud bo'lsa va B A ning super turi bo'lsa , unda siz B kerak bo'lgan har qanday joyda A dan xavfsiz foydalanishingiz mumkin ( 6-2-rasm ).

6-2-rasm. B - A ning super turi
3-1-rasmdagi oqim sxemasidan :

  • Massiv Tuplening super turidir.

  • Ob'ekt massivning super turidir.

  • Har qanday narsa hamma narsaning super turidir.

  • Hech qachon hech narsaning super turi emas.

  • Hayvon qushlarning super turidir .

Bu pastki tiplar qanday ishlashiga qarama-qarshidir va boshqa hech narsa yo'q. Farqlanish
A turi boshqa B turining pastki turimi yoki yo'qligini tushunish juda oson . Raqam , satr va boshqalar kabi oddiy turlar uchun siz ularni 3-1-rasmdagi oqim diagrammasidan qidirishingiz yoki u orqali fikr yuritishingiz mumkin (“ raqam birlashma raqami | stringda mavjud , shuning uchun u quyidagi pastki turi bo'lishi kerak) u").
Ammo parametrlangan (umumiy) turlar va boshqa murakkabroq turlar uchun u yanada murakkablashadi. Ushbu holatlarni ko'rib chiqing:

  • Massiv qachon massiv ning pastki turi hisoblanadi ?

  • A shakli qachon boshqa B shaklining kichik turi hisoblanadi ?

  • Qachon funktsiya (a: A) => B boshqa funktsiyaning pastki turi (c: C) => D ?

Boshqa turlarni oʻz ichiga olgan turlar (yaʼni, Array kabi tip parametrlari, {a: number} kabi maydonlari boʻlgan shakllar yoki (a: A) => B kabi funksiyalar ) uchun subtipatsiya qoidalari haqida fikr yuritish qiyinroq va javoblar unchalik aniq emas. Darhaqiqat, bunday murakkab turlar uchun kichik tiplash qoidalari dasturlash tillari o'rtasida katta kelishmovchilik nuqtasidir - deyarli bir xil tillar mavjud emas!
Quyidagi qoidalarni o'qishni osonlashtirish uchun men turlar haqida biroz aniqroq va qisqacha gapirishga imkon beradigan bir necha sintaksis bo'limini kiritmoqchiman. Bu sintaksis yaroqsiz TypeScript; Bu turlar haqida gapirganda, siz va men uchun umumiy tilni baham ko'rishning bir usuli. Xavotir olmang, qasamki, sintaksis matematika emas:

  • A <: B " A - B turining pastki turi yoki bir xil " degan ma'noni anglatadi.

  • A >: B " A " B turining super turi yoki bir xil " degan ma'noni anglatadi .
Shakl va massiv dispersiyasi

Murakkab turlar uchun subtiplash qoidalarida tillar nima uchun kelishmovchiliklar mavjudligini tushunish uchun sizga murakkab turga misol keltiraman: shakllar. Ilovangizda foydalanuvchini tavsiflovchi shakl bor deylik. Siz uni shunday ko'rinadigan bir juft tur bilan ifodalashingiz mumkin:
// Biz serverdan olgan mavjud foydalanuvchi

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   88   89   90   91   92   93   94   95   ...   206




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling