Programming TypeScript
Turlar o'rtasidagi munosabatlar
Download 1.81 Mb.
|
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)
- Bu sahifa navigatsiya:
- Pastki turi
- Supertip
- Shakl va massiv dispersiyasi
Turlar o'rtasidagi munosabatlarKeling, TypeScript-dagi turdagi munosabatlarni batafsil ko'rib chiqishdan boshlaylik. Subtiplar va supertiplar18-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 turiAgar 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. SupertipAgar 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 dispersiyasiMurakkab 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling