turi RedisClient = {
kuni ( hodisa : 'tayyor' , f : () => bekor ) : bekor kuni ( hodisa : 'xato' , f : ( e : Xato ) => bekor ) : bekor
kuni ( hodisa : "qayta ulanish" ,
f : ( params : { urinish : raqam , kechikish : raqam }) => bekor ) : bekor }
Bu juda yaxshi ishlaydi, lekin bu biroz so'zli. Keling, uni xaritalangan tur ( 137-betdagi “Xaritalangan turlar” ga qarang ), hodisa taʼriflarini oʻz turiga ajratib koʻrsatamiz, Voqealar :
turi Voqealar = { tayyor : bekor xato : xato
qayta ulanish : { urinish : raqam , kechikish : raqam }}
turi RedisClient = { kuni < E uzaytiradi kaliti Voqealar > ( hodisa : E ,
Asinxron oqimlar
f : ( arg : Voqealar [ E ]) => bekor
) : bekor
}
Biz Redis mijozi chiqarishi mumkin bo'lgan har bir hodisani va ushbu hodisa uchun argumentlarni sanab o'tadigan bitta ob'ekt turini aniqlashdan boshlaymiz.
Voqealar turi bo'yicha xaritalashamiz va TypeScript- ga biz belgilagan har qanday hodisa bilan chaqirilishi mumkinligini aytamiz .
Keyin biz ushbu turdan Node–Redis kutubxonasini xavfsizroq qilish uchun uning ikkala usullarini - chiqarish va yoqish - iloji boricha xavfsizroq kiritishimiz mumkin:
// ... turi RedisClient = { < E da uzaytiradi kaliti Voqealar > (
voqea : E ,
f : ( arg : Voqealar [ E ]) => bekor
) : bekor
chiqarish < E uzaytiradi kaliti Voqealar > (
voqea : E , arg : Voqealar [ E ]
) : bekor
}
Tinglovchilar va emitentlarni yaratish uchun hodisa nomlari va argumentlarini shaklga keltirish va ushbu shaklni xaritalashning bunday namunasi haqiqiy dunyo TypeScript kodida keng tarqalgan. Bu ham qisqa va juda xavfsiz. Emitent shu tarzda yozilsa, siz kalitni noto'g'ri yozishingiz, argumentni noto'g'ri yozishingiz yoki argumentni o'tkazishni unutishingiz mumkin emas. Shuningdek, u sizning kodingizdan foydalanadigan muhandislar uchun hujjat bo'lib xizmat qiladi, chunki ularning kod muharrirlari ularga tinglashlari mumkin bo'lgan voqealarni va ushbu hodisalarning qayta qo'ng'iroqlaridagi parametrlar turlarini taklif qiladi.
Do'stlaringiz bilan baham: |