Programming TypeScript


Download 1.81 Mb.
bet69/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   65   66   67   68   69   70   71   72   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

Sinflar va meros


Biz shaxmat dvigatelini quramiz. Dvigatelimiz shaxmat o'yinini modellashtiradi va ikki o'yinchiga navbatma-navbat harakat qilishlari uchun API taqdim etadi.
Biz turlarini chizishdan boshlaymiz:
// Shaxmat o'yini sinfini ifodalaydi Oʻyin {}
// Shaxmat donalari sinfi Parcha {}
sinfi uchun koordinatalar to'plami Pozitsiya {} Olti turdagi qismlar mavjud:
// ... sinf Qirol uzaytiradi Parcha {} sinf Qirolicha uzaytiradi Parcha {} sinf Bishop uzaytiradi Parcha {} sinf Ritsar uzaytiradi Parcha {} sinf Rook uzaytiradi Parcha {} sinf Piyon uzaytiradi Parcha {}
Har bir qismning rangi va joriy holati mavjud. Shaxmatda pozitsiyalar (harf, raqam) koordinata juftlari sifatida modellashtiriladi; harflar x o'qi bo'ylab chapdan o'ngga, raqamlar esa y o'qi bo'ylab pastdan yuqoriga o'tadi ( 5-1-rasm ).

5-1-rasm. Shaxmatda standart algebraik yozuv: A–H (x o‘qi) “fayllar” deb ataladi va
1–8 (teskari y o'qi) "o'rinlar"
Keling, Piece sinfimizga rang va joy qo'shamiz:
turi Rang = "Qora" | "Oq"
turi Fayl = 'A' | "B" | 'C' | "D" | 'E' | 'F' | 'G' | "H" turi Daraja = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
sinf Position { konstruktor ( xususiy fayl : fayl , xususiy daraja : daraja
) {}
}
sinf Parcha {
himoyalangan pozitsiya : pozitsiya konstruktor (

xususiy faqat o'qish rang : rang ,
fayl : Fayl , daraja : Rank
) {
bu . pozitsiya = yangi Lavozim ( fayl , unvon )
}
}
Ranglar, darajalar va fayllar nisbatan kam bo'lganligi sababli, biz ularning mumkin bo'lgan qiymatlarini literal turi sifatida qo'lda sanashimiz mumkin. Bu bizga ushbu turdagi domenlarni barcha satrlar va barcha raqamlardan bir nechta o'ziga xos qatorlar va raqamlar bilan cheklash orqali qo'shimcha xavfsizlikni siqib chiqarishga imkon beradi.
Xususiy _ konstruktordagi kirish modifikatori avtomatik ravishda parametrni unga ( this.file va boshqalar) tayinlaydi va uning koʻrinishini shaxsiy qilib oʻrnatadi, yaʼni Position misolidagi kod uni oʻqishi va yozishi mumkin, lekin Position misolidan tashqaridagi kod” t. Position ning turli misollari bir-birining shaxsiy a'zolariga kirishi mumkin; boshqa har qanday sinf misollari, hatto Position pastki klassi ham qila olmaydi.
Biz misol o'zgaruvchisi pozitsiyasini himoyalangan deb e'lon qilamiz . Xususiy kabi , protected bu xususiyatni tayinlaydi , lekin xususiydan farqli o'laroq , himoyalangan xususiyatni Piece misollariga ham , Piece'ning har qanday kichik sinfi misollariga ham ko'rinadigan qiladi . Biz pozitsiyani e'lon qilishda qiymat belgilamadik , shuning uchun biz unga Piece konstruktor funksiyasida qiymat belgilashimiz kerak . Agar konstruktorda unga qiymat belgilamaganimizda, TypeScript bizga o'zgaruvchi aniq tayinlanmaganligini aytgan bo'lardi, ya'ni biz uni T tipidagi deb aytdik , lekin u aslida T | undefined, chunki u xususiyat ishga tushirgichda yoki konstruktorda qiymat belgilanmagan - shuning uchun biz uning imzosini yangilashimiz kerak, bu Position shart emas , balki undefined ham bo'lishi mumkin .

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   206




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