Programming TypeScript


Download 1.81 Mb.
bet50/206
Sana01.11.2023
Hajmi1.81 Mb.
#1737990
1   ...   46   47   48   49   50   51   52   53   ...   206
Bog'liq
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)

turi Zaxira = {
( dan : Sana , sana : Sana , maqsad : string ) : Rezervasyon
}
Keling, Reserve uchun dasturni aniqlaylik :
ruxsat bering zaxira : zaxira = ( dan , manzil ) = > { _
// ...
}
Shunday qilib, Baliga sayohatni bron qilmoqchi bo'lgan foydalanuvchi bizning zahiradagi API-ga sana , sana va "Bali" manzili sifatida qo'ng'iroq qilishi kerak.
Biz API-ni bir tomonlama sayohatlarni qo'llab-quvvatlash uchun o'zgartirishimiz mumkin:
turi Zaxira = {
( dan : Sana , sana : Sana , maqsad : string ) : Rezervasyon ( dan : Sana , maqsad : string ) : Rezervasyon
}
Rezervni amalga oshirish nuqtasida xatolik berishini ko'rasiz ( 4-3-rasmga qarang ).

4-3-rasm. Birlashtirilgan ortiqcha yuk imzosi etishmayotganda TypeError
Bu TypeScript-da qo'ng'iroq imzosini haddan tashqari yuklash usuli bilan bog'liq. Agar siz f funktsiyasi uchun ortiqcha yuk imzolari to'plamini e'lon qilsangiz , qo'ng'iroq qiluvchining nuqtai nazaridan f ning turi o'sha ortiqcha yuk imzolarining birlashuvidir. Lekin f ning amalga oshirish nuqtai nazaridan, aslida amalga oshirilishi mumkin bo'lgan yagona, birlashtirilgan tur bo'lishi kerak. F -ni amalga oshirishda ushbu qo'shma chaqiruv imzosini qo'lda e'lon qilishingiz kerak - bu siz uchun taxmin qilinmaydi. Zaxira misolimiz uchun biz zaxira funksiyamizni quyidagicha yangilashimiz mumkin :
turi Zaxira = {
( dan : Sana , sana : Sana , maqsad : string ) : Rezervasyon ( dan : Sana , maqsad : string ) : Rezervasyon
}
ruxsat bering zaxira : zaxira = (
dan : Sana ,
toOrDestination : Sana | string , maqsad? : string ) => { // ...
}

Biz ikkita haddan tashqari yuklangan funktsiya imzosini e'lon qilamiz.
Amalga oshirish imzosi ikkita ortiqcha yuk imzolarini qo'lda birlashtirganimiz natijasidir (boshqacha qilib aytganda, biz Imzo1 | Imzo2ni qo'lda hisoblab chiqdik). E'tibor bering, qo'shma imzo zaxirani chaqiradigan funktsiyalarga ko'rinmaydi ; iste'molchi nuqtai nazaridan, Rezervning imzosi:
turi Zaxira = {
( dan : Sana , sana : Sana , maqsad : string ) : Rezervasyon
( dan : Sana , maqsad : string ) : Rezervasyon
}
Shunisi e'tiborga loyiqki, bunga biz yaratgan umumiy imzo kirmaydi:
// Noto'g'ri!
turi Zaxira = {
( dan : Sana , sana : Sana , maqsad : string ) : Rezervasyon
( dan : Sana , maqsad : string ) : Rezervasyon
( dan : Sana , to yoki manzil : Sana | string , maqsad? : string ) : Rezervasyon }
Zaxira ikki xil usulda chaqirilishi mumkinligi sababli , zahirani qo'llaganingizda TypeScript-ga uning qanday chaqirilganligini tekshirganingizni isbotlashingiz kerak:21

Download 1.81 Mb.

Do'stlaringiz bilan baham:
1   ...   46   47   48   49   50   51   52   53   ...   206




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