Programming TypeScript
turi Kompaniya identifikatori = string turi
Download 1.81 Mb.
|
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)
turi Kompaniya identifikatori = string turi Buyurtma identifikatori = string turi Foydalanuvchi IDsi = ip
turi ID = Kompaniya identifikatori | Buyurtma identifikatori | Foydalanuvchi IDsi UserID turidagi qiymat "d21b1dbf" kabi oddiy xesh bo'lishi mumkin . Shunday qilib, siz uni UserID deb nomlashingiz mumkin bo'lsa-da , kaput ostida bu oddiy string . UserID ni oladigan funksiya quyidagicha ko'rinishi mumkin: funktsiyasi queryForUser ( id : UserID ) { // ... } identifikatorni kiritish kerakligini aniq bilishga yordam beradi . Lekin UserID string uchun taxallus bo'lgani uchun , bu yondashuv xatolarning oldini olish uchun ozgina yordam beradi. Muhandis tasodifan noto'g'ri identifikator turiga o'tishi mumkin va tizim turlaridan oqilona bo'lmaydi! ruxsat bering ID : kompaniya identifikatori = 'b4843361' queryForUser ( id ) // OK (!!!) Bu erda nominal turlar yordam beradi. TypeScript nominal turlarni qo'llab-quvvatlamasa-da, biz ularni 32type branding deb nomlangan texnika bilan taqlid qilishimiz mumkin . Turi brendini sozlash biroz mehnat talab qiladi va uni TypeScript-da ishlatish, nominal turdagi taxalluslarni qo'llab-quvvatlaydigan tillarda bo'lgani kabi silliq emas. Ya'ni, markali turlar dasturingizni sezilarli darajada xavfsizroq qilishi mumkin. I lovangizga va muhandislik guruhingiz hajmiga qarab (jamoangiz qanchalik katta bo'lsa, bu usul xatolarning oldini olish uchun qanchalik foydali bo'ladi), buni qilish kerak bo'lmasligi mumkin. Har bir nominal turingiz uchun sintetik turdagi brend yaratishdan boshlang : turi Kompaniya identifikatori = ip & { faqat oʻqish uchun brend : noyob belgisi } turi Buyurtma identifikatori = ip & { faqat oʻqish uchun brend : noyob belgisi } turi Foydalanuvchi IDsi = ip & { faqat oʻqish uchun brend : noyob belgisi } turi ID = Kompaniya identifikatori | Buyurtma identifikatori | Foydalanuvchi IDsi Satr va {faqat o'qish uchun brend: noyob belgi} kesishishi , albatta, g'alati. Men buni tanladim, chunki bu turni tabiiy ravishda qurish mumkin emas va bu turdagi qiymatni yaratishning yagona yo'li - tasdiqlash. Bu markali turlarning muhim xususiyati: ular tasodifan noto'g'ri turni o'z o'rnida ishlatishni qiyinlashtiradi. Men "brend" sifatida noyob belgidan foydalandim , chunki u TypeScript-dagi ikkita haqiqiy nominal turdagi turlardan biri (ikkinchisi - enum ); Berilgan satr ma'lum bir markali tur ekanligini ta'kidlashimiz uchun men ushbu brendning sim bilan kesishgan qismini oldim . CompanyID , OrderID va UserID turdagi qiymatlarni yaratish usuli kerak . Buni amalga oshirish uchun biz qo'shimcha ob'ekt namunasidan foydalanamiz ( 140-betdagi "Hamkor ob'ekt namunasi" da kiritilgan ). Biz har bir markali tur uchun konstruktor yaratamiz, har bir ma'nosiz turlarimizning qiymatini yaratish uchun tur tasdiqidan foydalanamiz: 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