Programming TypeScript


funktsiyasi Variant < T > ( qiymat : null | aniqlanmagan


Download 1.81 Mb.
bet137/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   133   134   135   136   137   138   139   140   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

funktsiyasi Variant < T > ( qiymat : null | aniqlanmagan ) : Yo'q funktsiyasi Variant < T > ( qiymat : T ) : Ba'zilari < T > funktsiyasi Variant < T > ( qiymat : T ) : Variant < T > {
agar ( qiymat == null ) { qaytish yangi Yo'q
}
qaytish yangi Ba'zi ( qiymat )}

Agar iste'molchi Option ni null yoki undefined bilan chaqirsa , biz None ni qaytaramiz .
Aks holda, biz Some ni qaytaramiz , bu erda T foydalanuvchi kiritgan qiymat turidir.
Va nihoyat, biz haddan tashqari yuklangan ikkita imzo uchun yuqori chegarani qo'lda hisoblaymiz. Nullning yuqori chegarasi | aniqlanmagan va T - T | null | aniqlanmagan , qaysi
T ga soddalashtiradi . None va Some ning yuqori chegarasi None | Ba'zi , bizda allaqachon nomi bor: Option .
Bo'ldi shu. Biz to'liq ishlaydigan, minimal variant turini oldik , bu bizga nol qiymatlar ustida operatsiyalarni xavfsiz bajarish imkonini beradi . Biz buni shunday ishlatamiz:
ruxsat bering natija = Variant ( 6 ) // Ba'zi . flatMap ( n => Variant ( n * 3 )) // Ba'zi
. flatMap ( n => yangi Yo'q ) // Yo'q
. getOrElse ( 7 ) // 7
Tug'ilgan kunimizning misoliga qaytsak, bizning kodimiz endi biz kutgandek ishlaydi:
so'rang () // Variant . flatMap ( parse ) // Variant
. flatMap ( sana => yangi Ba'zi ( sana . toISOString ())) // Variant
. flatMap ( sana => yangi Ba'zilari ( 'Sana ' + sana )) // Variant
. getOrElse ( 'Ba'zi sabablarga ko'ra sanani tahlil qilishda xatolik' ) // string
Variant s - muvaffaqiyatli yoki muvaffaqiyatsiz bo'lishi mumkin bo'lgan ketma-ket operatsiyalar bilan ishlashning kuchli usuli. Ular sizga mukammal turdagi xavfsizlikni ta'minlaydi va turdagi tizim orqali iste'molchilarga ma'lum bir operatsiya muvaffaqiyatsiz bo'lishi mumkinligi haqida signal beradi.
Biroq, Variantlarning salbiy tomonlari yo'q emas. Ular None bilan ishlamay qolganligini bildiradi , shuning uchun nima va nima uchun muvaffaqiyatsizlikka uchraganligi haqida ko'proq ma'lumot olmaysiz. Ular, shuningdek, Option s dan foydalanmaydigan kod bilan o'zaro ishlamaydi ( variant s ni qaytarish uchun ushbu API-larni aniq o'rashingiz kerak bo'ladi ).
Shunday bo'lsa-da, u erda qilgan ishingiz juda chiroyli edi. Siz qo'shgan ortiqcha yuklar sizga ko'pchilik tillarda, hatto null qiymatlar bilan ishlash uchun Variant turiga tayanadigan tillarda ifoda eta olmaydigan narsani qilishga imkon beradi . Haddan tashqari yuklangan qo'ng'iroq imzolari orqali Variantni faqat Ba'zi yoki Yo'q deb cheklab , siz kodingizni butunlay xavfsizroq qildingiz va Haskell dasturchilarining ko'pchiligi juda hasad qildilar. Endi o'zingizga sovuqni oling - siz bunga loyiqsiz.

Xulosa


Ushbu bobda biz TypeScript-da xatoliklarni signallash va tiklashning turli usullarini ko'rib chiqdik: null ni qaytarish , istisnolarni tashlash, istisnolarni qaytarish va Variant turi. Endi sizda muvaffaqiyatsiz bo'lishi mumkin bo'lgan narsalar bilan xavfsiz ishlash uchun yondashuvlar arsenaliga egasiz. Qaysi yondashuvni tanlash sizga bog'liq va quyidagilarga bog'liq:

  • Siz shunchaki biror narsa muvaffaqiyatsizlikka uchraganligi haqida signal berishni xohlaysizmi ( null , Option ) yoki nima uchun muvaffaqiyatsizlikka uchraganligi haqida ko'proq ma'lumot berishni xohlaysizmi (tashqariga chiqarish va istisnolar).

  • Iste'molchilarni barcha mumkin bo'lgan istisnolarni aniq ko'rib chiqishga majburlashni xohlaysizmi (istisnolarni qaytarish) yoki kamroq xatolarni qayta ishlash jadvalini yozish (istisnolarni tashlash).

Xulosa

  • Xatolarni yaratish usuli kerakmi ( Variant ) yoki ular paydo bo'lganda ularni hal qiling ( null , istisnolar).

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   133   134   135   136   137   138   139   140   ...   206




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