الكتابة الصارمة للدوال كمعاملات في TypeScript: كيف تعلن عن نوع لـ callback؟
مرحباً بالجميع! بدأت مؤخراً في تعلم TypeScript وواجهت مشكلة عند تمرير الدوال كوسائط. في JavaScript كنت أفعل ذلك غالباً:
```typescript
function processData(data, callback) {
const result = data.map(item => item * 2);
callback(result);
}
processData([1, 2, 3], function(result) {
console.log(result);
});
```
لكن في TypeScript أحتاج إلى تحديد الأنواع، ولا أفهم كيف أعلن بشكل صحيح عن نوع المعامل الدالة. جربت عدة خيارات لكنها لا تعمل:
```typescript
// الخيار 1: مجرد تحديد any
function processData(data: number[], callback: any) { ... }
// الخيار 2: Function
function processData(data: number[], callback: Function) { ... }
```
الخيار الأول يقتل جوهر TypeScript — يتم فقدان التحقق من الأنواع. الثاني أيضاً لا يعطي تحديداً — يمكنني تمرير أي دالة، حتى مع معاملات غير صحيحة.
كيف أعلن بشكل صحيح عن نوع لـ callback بحيث يتحقق TypeScript من:
1. عدد المعاملات التي تأخذها