Avatar ·

كيفية كتابة نوع دالة الاستدعاء (callback) بشكل صحيح في معامل طريقة TypeScript؟

مرحباً بالجميع! أنا بدأت للتو في فهم TypeScript وواجهت مشكلة. في الكلاس الخاص بي، هناك طريقة تأخذ دالة استدعاء (callback). أريد كتابة نوع المعامل بحيث يمكن تمرير أي دالة (بأي عدد من الوسائط وقيمة إرجاع)، ولكن دون استخدام `any` للحفاظ على التحقق من الأنواع. إليك ما أحاول: ```typescript class EventBus { on(eventName: string, callback: any) { // هذا يعمل، لكنه غير آمن // ... } } const bus = new EventBus(); bus.on('click', (data: number) => console.log(data)); // لن يكون هناك خطأ حتى لو مررت سلسلة نصية ``` أفهم أن `any` يعطل التحقق من الأنواع تماماً وهذه ممارسة سيئة. حاولت استخدام `Function`، لكنه واسع جداً أيضاً ولا يسمح بالعمل مع الوسائط بشكل صحيح. رأيت في التوثيق `(...args: any[]) => any`، لكني أعتقد أنها حل مؤقت. هل هناك طريقة أكثر أناقة؟ كيف يمكن تعريف نوع "أي دالة" في TypeScript بحيث: