Programming TypeScript


turi Ovqat = { kaloriya : raqam mazali : boolean } turi


Download 1.81 Mb.
bet75/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   71   72   73   74   75   76   77   78   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

turi Ovqat = { kaloriya : raqam mazali : boolean
}
turi Sushi = Ovqat & { sho'r : mantiqiy
}
turi Kek = Ovqat & { shirin : mantiqiy }
Deyarli teng ravishda siz buni interfeyslar bilan ham qilishingiz mumkin:
interfeys Oziq-ovqat { kalori : raqam mazali : boolean
}
interfeys Sushi uzaytiradi Oziq-ovqat {
sho'r : boolean
}
interfeys Kek uzaytiradi Oziq-ovqat {
shirin : mantiqiy }
I nterfeyslar boshqa interfeyslarni kengaytirishi shart emas. Aslida, interfeys har qanday shaklni kengaytirishi mumkin: ob'ekt turi , sinf yoki boshqa interfeys .
Turlar va interfeyslar o'rtasidagi farqlar qanday? Uchtasi bor va ular nozik.
Birinchisi, tipdagi taxalluslar umumiyroqdir, chunki ularning o‘ng tomoni har qanday turdagi bo‘lishi mumkin, jumladan, tip ifodasi (tur va & yoki | kabi ba’zi turdagi operatorlar bo‘lishi mumkin ); interfeys uchun o'ng tomon shakl bo'lishi kerak. Misol uchun, quyidagi turdagi taxalluslarni interfeys sifatida qayta yozishning hech qanday usuli yo'q:
turi A = raqam turi B = A | ip
Ikkinchi farq shundaki, siz interfeysni kengaytirganingizda, TypeScript siz kengaytirayotgan interfeys kengaytmangizga tayinlanishi mumkinligiga ishonch hosil qiladi. Masalan:
interfeys A { yaxshi ( x : raqam ) : ip yomon ( x : raqam ) : string }
interfeys B uzaytiradi A { yaxshi ( x : string | raqam ) : ip
yomon ( x : string ) : ip // Xato TS2430: "B" interfeysi noto'g'ri kengaytirilgan } // "A" interfeysi. "Raqam" turini tayinlab bo'lmaydi // 'string' yozish uchun.
Kesishish turlaridan foydalanganda bunday bo'lmaydi: agar siz oxirgi misoldagi interfeyslarni tipdagi taxalluslarga va kengaytmalarni kesishmaga ( & ) aylantirsangiz, TypeScript kengaytmangizni kengaytirilayotgan tur bilan birlashtirish uchun qo'lidan kelganini qiladi, natijada shunday bo'ladi. kompilyatsiya vaqtida xato o'rniga noto'g'ri uchun haddan tashqari yuklangan imzo (kod muharririda sinab ko'ring!).
Ob'ekt turlari uchun merosni modellashtirganingizda, TypeScript interfeyslar uchun tayinlash imkoniyatini tekshirish xatolarni aniqlash uchun foydali vosita bo'lishi mumkin.
Uchinchi farq shundaki, bir xil nomdagi bir nechta interfeyslar avtomatik ravishda birlashtiriladi; bir xil nomdagi bir nechta turdagi taxalluslar kompilyatsiya vaqtida xatolikka olib keladi. Bu deklaratsiyani birlashtirish deb ataladigan xususiyatdir .

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   71   72   73   74   75   76   77   78   ...   206




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