Programming TypeScript
Download 1.81 Mb.
|
Boris Cherny Programming TypeScript Making Your JavaScript Applications (1)
qaytish bu . emitent . yoqilgan ( kanal , tinglovchi )
} } SafeEmitter umumiy turdagi Hodisalarni e'lon qiladi , Xususiyatlar kalitidan (yaroqli ob'yekt kalitlari uchun TypeScript-ning o'rnatilgan turi: string , number yoki Symbol ) parametrlar ro'yxatiga yozishni e'lon qiladi. Biz emitentni SafeEmitter -da shaxsiy a'zo sifatida e'lon qilamiz . Biz buni SafeEmitter-ni kengaytirish o'rniga qilamiz, chunki emit va yoqish uchun imzolarimiz EventEmitter -dagi haddan tashqari yuklangan hamkasblariga qaraganda ancha cheklangan va funksiyalar o'z parametrlarida qarama-qarshi bo'lganligi sababli (esda tutingki, a funktsiyasi boshqa funktsiyaga tayinlanishi uchun b uning parametrlari shunday bo'lishi kerak). b ) TypeScript bu ortiqcha yuklarni e'lon qilishga ruxsat bermaydi. emit biz Hodisalar turida aniqlagan parametrlar ro'yxatiga mos keladigan kanal va argumentlarni oladi . Xuddi shunday, on kanal va tinglovchini oladi . tinglovchi biz Voqealar turida belgilagan parametrlar ro'yxatiga mos keladigan o'zgaruvchan sonli argumentlarni oladi . Biz SafeEmitter- dan tinglash qatlamini xavfsiz amalga oshirish uchun zarur bo'lgan qozonni keskin qisqartirish uchun foydalanishimiz mumkin. Ishchi tomonda biz barcha xabarlar qo'ng'iroqlarini emitentimizga topshiramiz va iste'molchilarga qulay va xavfsiz tinglovchi API-ni taqdim etamiz: // WorkerScript.ts turi Buyruqlar = { sendMessageToThread : [ ThreadID , Xabar ] createThread : [ Ishtirokchilar ] addUserToThread : [ ThreadID , UserID ] removeUserFromThread : [ ThreadID , UserID ] } turi Voqealar = { acceptMessage : [ ThreadID , UserID , Message ] createdThread : [ ThreadID , ishtirokchilar ] addedUserToThread : [ ThreadID , UserID ] removeUserFromThread : [ ThreadID , UserID ] } // Asosiy mavzudan keladigan voqealarni tinglang buyruq beruvchi = yangi SafeEmitter < Buyruqlar > () // Voqealarni asosiy oqimga qaytaring let voqea beruvchi = yangi SafeEmitter < Voqealar > () // Asosiy mavzudan kiruvchi buyruqlarni o'rash // bizning typesafe hodisa emitentimiz yordamida xabar = buyruq => buyruq beruvchi . chiqarish ( buyruq . maʼlumotlar . turi , ... buyrugʻi . maʼlumotlar . maʼlumotlar ) // Ishchi tomonidan chiqarilgan voqealarni tinglang va ularni asosiy mavzuga yuboring voqea emitter . on ( 'receivedMessage' , ma'lumotlar => postMessage ({ turi : 'receivedMessage' , ma'lumotlar }) ) voqea emitter . on ( 'createdThread' , ma'lumotlar => postMessage ({ turi : 'createdThread' , ma'lumotlar }) ) // va hokazo. // SendMessageToThread buyrug'iga asosiy ip buyrug'idan javob berishEmitter . yoqilgan ( 'sendMessageToThread' , ( threadID , xabar ) => konsol . jurnal ( OK , men bo'ladi yuborish a xabar uchun threadID $ { threadID })) // Voqeani asosiy mavzuga qaytaring eventEmitter . emit ( 'createdThread' , 123 , [ 456 , 789 ]) Boshqa tomondan, buyruqlarni asosiy ipdan ishchi ipga yuborish uchun EventEmitter- ga asoslangan API-dan ham foydalanishimiz mumkin. Shuni esda tutingki, agar siz ushbu naqshni o'z kodingizda ishlatsangiz, joker belgilar tinglovchilarini qo'llab-quvvatlaydigan to'liq xususiyatli emitentdan (masalan, Paolo Fragomenining ajoyib EventEmitter2 ) foydalanishni ko'rib chiqishingiz mumkin, shuning uchun har bir hodisa turi uchun tinglovchini qo'lda qo'shishingiz shart emas. : // MainThread.ts turi Buyruqlar = { sendMessageToThread : [ ThreadID , Xabar ] createThread : [ Ishtirokchilar ] addUserToThread : [ ThreadID , UserID ] removeUserFromThread : [ ThreadID , UserID ] } turi Voqealar = { acceptMessage : [ ThreadID , UserID , Message ] createdThread : [ ThreadID , ishtirokchilar ] addedUserToThread : [ ThreadID , UserID ] removeUserFromThread : [ ThreadID , UserID ] } Download 1.81 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling