turi Dialog = { id? : string }
funktsiyasi closeDialog ( dialog : Dialog ) {
agar ( ! dialog . id ) { qaytish
}
setTimeout (() => removeFromDOM ( muloqot oynasi , hujjat . getElementById ( dialog . id ! )) !
)
)
}
funktsiyasi removeFromDOM ( muloqot oynasi : Dialog , element : Element ) {
element . parentNode ! . removeChild ( element )
o'chirish dialog . identifikatori }
dialog.id , document.getElementById chaqiruvimiz natijasi va element.parentNode aniqlanganligiga ishonchimiz komilligini bildiruvchi null bo'lmagan tasdiqlash operatorlarining ( ! ) tarqalishiga e'tibor bering . Agar null bo'lmagan tasdiq null yoki undefined bo'lishi mumkin bo'lgan turdan keyin bo'lsa , TypeScript turni aniqlangan deb hisoblaydi: T | null | unde jarima bo'ladi T , raqam | string | null raqamga aylanadi | string va boshqalar.
Agar siz null bo'lmagan tasdiqlardan ko'p foydalanayotgan bo'lsangiz, bu ko'pincha kodingizni qayta tiklashingiz kerakligining belgisidir. Masalan, Dialogni ikki turdagi birlikka bo'lish orqali biz tasdiqdan xalos bo'lishimiz mumkin :
turi VisibleDialog = { id : string } turi DestroyedDialog = {}
turi Dialog = VisibleDialog | DestroyedDialog
ittifoqdan foydalanish uchun closeDialog-ni yangilashimiz mumkin :
funktsiyasi closeDialog ( dialog : Dialog ) {
agar ( ! ( 'id') ichida dialog ) ) {
qaytish
}
setTimeout (() => removeFromDOM ( muloqot oynasi , hujjat . getElementById ( dialog . ID ) !
)
)
}
funktsiyasi removeFromDOM ( muloqot oynasi : VisibleDialog , element : Element ) {
element . parentNode ! . removeChild ( element )
o'chirish dialog . identifikatori }
Dialog oynasida id xususiyati aniqlanganligini tekshirganimizdan so‘ng, u Visi bleDialog ekanligini bildiradi — hatto strelka funksiyasi ichida ham TypeScript dialog oynasiga havola o‘zgarmaganligini biladi: o‘q funksiyasi ichidagi dialog funksiya tashqarisidagi bir xil dialog oynasi , shuning uchun takomillashtirish oxirgi misoldagidek bekor bo'lish o'rniga o'tadi.
Do'stlaringiz bilan baham: |