تايب سكريبت

كيف يمكن استخدام العمليات الجينيريكية في Typescript للعمل مع “نوع” (Type) مخصص؟

يمكن استخدام العمليات الجينيريكية في Typescript للعمل مع أنواع مخصصة عن طريق تعريف النوع المخصص كواحدة من المعاملات الجينيريكية للعملية.

على سبيل المثال ، إذا كان لدينا نوعًا مخصصًا يتمثل في “نقطة” (Point) ونود إنشاء دالة لحساب مسافة بين نقطتين ، فيمكننا استخدام العمليات الجينيريكية على النحو التالي:

“`typescript
class Point {
constructor(public x: number, public y: number) {}
}

function distance(point1: T, point2: T): number {
const dx = point2.x – point1.x;
const dy = point2.y – point1.y;
return Math.sqrt(dx * dx + dy * dy);
}

const p1 = new Point(0, 0);
const p2 = new Point(3, 4);
const dist = distance(p1, p2);
console.log(dist); // Output: 5
“`

في هذا المثال ، تم تعريف الدالة `distance` باستخدام عملية جينيريكية `T extends Point` حيث `T` هو النوع المخصص. يتم تطبيق شرط القيود `T extends Point` للتأكد من أن النوع `T` يمكن أن يكون أي نوع مشتق من `Point`.

ثم يتم استخدام هذا النوع المخصص `T` كمعامل للاستدعاء العادي للدالة. في هذه الحالة ، يتم تمرير كائني النقطة `p1` و `p2` كمعاملات للدالة `distance` ويتم اعتبارهما كنقطتين لحساب المسافة بينهما.

يتم استخدام العمليات الجينيريكية في هذا المثال لإنشاء دالة `distance` التي يمكن استخدامها مع أي نوع يتم تعريفه كمشتق من `Point` دون الحاجة إلى إعادة كتابة الدالة لكل نوع جديد.