مقدمة في أنواع الدوال في TypeScript
تتطلب TypeScript أنواعاً لكل شيء. ويشمل ذلك الدوال الخاصة بك. يجب عليك تحديد أنواع المدخلات والمخرجات.
صيغة الدوال
يمكنك تحديد أنواع المدخلات ونوع المخرجات بهذا الشكل:
function add(x: number, y: number): number {
return x + y;
}
تستخدم TypeScript أيضاً استنتاج الأنواع (type inference). لست بحاجة دائماً لكتابة نوع المخرجات، حيث يقوم المترجم (compiler) بالعثور عليه نيابة عنك.
إذا كانت الدالة تعيد أنواعاً مختلفة، فإن TypeScript تتعامل مع ذلك. على سبيل المثال، إذا كانت الدالة تعيد رقماً أو نصاً، فسيقوم المترجم باكتشاف كليهما.
أنواع الإرجاع الخاصة
- void: استخدم هذا عندما لا تعيد الدالة أي شيء.
- never: استخدم هذا عندما تقوم الدالة برمي خطأ أو إيقاف البرنامج.
المعاملات
يمكنك جعل المعاملات اختيارية باستخدام علامة الاستفهام.
function makeProfile(name: string, age: number, url?: string) {
// code
}
يمكنك أيضاً استخدام القيم الافتراضية. وهذا يجعل المعامل اختيارياً دون الحاجة لرموز خاصة.
function makeProfile(name: string, age: number, url: string = "www.example.com") {
return name + " visits " + url;
}
دوال الاستدعاء (Callback Functions)
الدوال هي قيم، ويمكنك تمريرها كوسطاء (arguments). لتعريف نوع الـ callback، استخدم هذه الصيغة:
function makePage(func: (n: string, a: number, u?: string) => string, param1: string, param2: number) {
func(param1, param2);
}
أسماء المعاملات في الـ callback لا تهم، بل تهم الأنواع فقط.
مصفوفات الدوال
إذا كنت بحاجة إلى قائمة من الدوال، فقم بتعريفها كمصفوفة من نوع تلك الدالة.
function applyMath(funcs: ((a: number, b: number) => number)[], x: number, y: number) {
// code
}
معاملات البقية (Rest Parameters)
استخدم عامل الانتشار (spread operator) لقبول أي عدد من الوسائط. سيقوم هذا بتخزين جميع المدخلات في مصفوفة.
function sum(...numbers: number[]) {
// code
}
sum(1, 2, 3);
المصدر: https://dev.to/jsha/introduction-to-typescript-function-types-hin