turi UserTextEvent = { turi : "Matn hodisasi" , qiymat : satr , maqsad : HTMLInputElement }
turi UserMouseEvent = { turi : "Sichqoncha hodisasi" , qiymat : [ raqam , raqam ], maqsad : HTMLElement } turi UserEvent = UserTextEvent | UserMouseEvent
funktsiyasi tutqich ( hodisa : UserEvent ) { agar ( hodisa . turi === 'TextEvent' ) { hodisa . qiymat // qator voqea . maqsad // HTMLInputElement
// ... qaytish
}
voqea . qiymat // [raqam, raqam] voqea . maqsad // HTMLElement }
hodisani uning teglangan maydonining qiymati ( event.type ) asosida aniqlaganimizda , TypeScript if filialida voqea UserTextEvent bo'lishi kerakligini va if filialidan keyin UserMouseEvent bo'lishi kerakligini biladi . Teg har bir birlashma turi uchun noyob bo'lganligi sababli, TypeScript ikkalasi bir-birini istisno qilishini biladi.
Birlashma turining turli holatlarini boshqarishi kerak bo'lgan funktsiyani yozishda tegli birlashmalardan foydalaning. Masalan, Flux harakatlari, Redux reduktorlari yoki React's useReducer bilan ishlashda ular bebahodir .
Jamiyat
Dasturchi uxlashdan oldin yotoqxona stoliga ikkita stakan qo'yadi: chanqagan bo'lsa, to'la stakan va chanqagan bo'lsa, bo'sh.
— Anonim
To'liqlik, ya'ni to'liqlikni tekshirish deb ham ataladi , bu yozuv tekshirgichga sizning barcha holatlaringizni ko'rib chiqqaningizga ishonch hosil qilish imkonini beradi. Bu bizga Haskell, OCaml va naqsh moslashuviga asoslangan boshqa tillardan keladi.
TypeScript turli holatlarda to'liqlikni tekshiradi va ishni o'tkazib yuborganingizda sizga foydali ogohlantirishlar beradi. Bu haqiqiy xatolarning oldini olish uchun juda foydali xususiyatdir. Masalan:
turi Hafta kuni = dushanba | 'Shanba' | "chor" | "Pes" | "Jum" turi kun = Hafta kuni | 'shanba' | "Quyosh"
funktsiyasi getNextDay ( w : Weekday ) : kun {
almashtirish ( w ) {
Do'stlaringiz bilan baham: |