يوفر إصدار ES6 من TypeScript وظيفة السهم وهي الاختزال بناء الجملة لتعريف الوظيفة المجهولة، أي لتعبيرات الوظيفة. إنه يحذف الكلمة الأساسية للوظيفة. يمكننا أن نسميه سهمًا سمينًا (لأن -> سهم رفيع و=> يمثل ' سمين ' سهم). ويسمى أيضا أ وظيفة لامدا . تحتوي وظيفة السهم على نطاق معجمي لـ ' هذا 'الكلمة الرئيسية.
الدافع لوظيفة السهم هو:
- عندما لا نحتاج إلى الاستمرار في وظيفة الكتابة.
- إنه يجسد بشكل معجمي معنى هذه الكلمة الرئيسية.
- إنه يجسد بشكل معجمي معنى الحجج.
بناء الجملة
يمكننا تقسيم بناء جملة دالة السهم إلى ثلاثة أجزاء:
(parameter1, parameter2, ..., parameterN) => expression;
إذا استخدمنا سهم سمين (=>) التدوين، ليست هناك حاجة لاستخدام وظيفة الكلمة الرئيسية. يتم تمرير المعلمات بين قوسين ()، ويتم وضع تعبير الدالة داخل قوسين متعرجين {}.
هناك طريقتان لكتابة دالة بأسلوب الترميز ES5 وES6.
// ES5: Without arrow function var getResult = function(username, points) { return username + ' scored ' + points + ' points!'; }; // ES6: With arrow function var getResult = (username: string, points: number): string => { return `${ username } scored ${ points } points!`; }
وظيفة السهم مع المعلمة
البرنامج التالي هو مثال لوظيفة السهم مع المعلمات.
let sum = (a: number, b: number): number => { return a + b; } console.log(sum(20, 30)); //returns 50
في المثال أعلاه، مجموع هي دالة سهمية،' أ: العدد، ب: العدد 'هو نوع المعلمة،' : رقم ' هو نوع الإرجاع، وتدوين السهم => يفصل بين معلمة الوظيفة ونص الوظيفة.
بعد تجميع برنامج TypeScript أعلاه، فإن كود JavaScript المقابل هو:
let sum = (a, b) => { return a + b; }; console.log(sum(20, 30)); //returns 50
انتاج:
دالة السهم بدون معلمة
البرنامج التالي هو مثال لوظيفة السهم بدون معلمات.
let Print = () => console.log('Hello JavaTpoint!'); Print();
انتاج:
في دالة السهم، إذا كان نص الدالة يتكون من عبارة واحدة فقط، فلن تكون هناك حاجة للأقواس المتعرجة والكلمة الأساسية return. يمكننا أن نفهم ذلك من المثال أدناه.
let sum = (a: number, b: number) => a + b; console.log('SUM: ' +sum(5, 15));
انتاج:
وظيفة السهم في الفصل
يمكننا تضمين وظيفة السهم كخاصية في الفصل. المثال التالي يساعد على فهم ذلك بشكل أكثر وضوحا.
class Student { studCode: number; studName: string; constructor(code: number, name: string) { this.studName = name; this.studCode = code; } showDetail = () => console.log('Student Code: ' + this.studCode + ' Student Name: ' + this.studName) } let stud = new Student(101, 'Abhishek Mishra'); stud.showDetail();
انتاج: