Avatar ·

هل من الممكن في TypeScript تمرير دوال ذات أنواع محددة كمعاملات؟

مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم TypeScript وواجهت مشكلة أثناء العمل مع دوال الترتيب الأعلى. لدي دالة تأخذ دالة أخرى كوسيطة، وأريد أن يتحقق TypeScript من أن الدالة المُمرَّرة تحتوي على أنواع صحيحة للمعاملات وقيمة الإرجاع. إليك مثال لما أحاول فعله: ```typescript function applyOperation(x: number, y: number, operation: (a: number, b: number) => number): number { return operation(x, y); } // هذا يعمل const sum = applyOperation(5, 3, (a, b) => a + b); // 8 // لكن ماذا لو أردت تمرير دالة تأخذ سلاسل نصية؟ const badResult = applyOperation(5, 3, (a, b) => a.toString() + b.toString()); // لا يوجد خطأ، لكن النتيجة خاطئة ``` في الحالة الأخيرة، لا يشتكي TypeScript لأن `a.toString() + b.toString()` يُرجع سلسلة نصية، بينما المتوقع هو رقم. أريد أن يتحقق المترجم بدقة من الأنواع. أيضًا، رأيت أحيانًا استخدام هذا الصياغة