"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إجراء عمليات التحقق من نوع واجهة وقت التشغيل في TypeScript؟

كيفية إجراء عمليات التحقق من نوع واجهة وقت التشغيل في TypeScript؟

تم النشر بتاريخ 2024-12-23
تصفح:728

How to Perform Runtime Interface Type Checks in TypeScript?

التحقق من نوع الواجهة في TypeScript

داخل TypeScript، قد تواجه سيناريو حيث يكون تحديد توافق الكائن مع واجهة محددة مسبقًا في وقت التشغيل أمرًا بالغ الأهمية . في حين أن عمليات التحقق من نوع الفئة التي تستفيد من مثيل الكلمة الأساسية تكون واضحة ومباشرة، فإن تطبيقها على الواجهات يمثل تحديًا.

أثبتت الأساليب التقليدية، مثل الاعتماد على مثيل عامل التشغيل، عدم فعاليتها نظرًا لأن الواجهات تفتقر إلى التمثيل كأنواع متميزة في JavaScript المترجمة. وبدلاً من ذلك، تقدم حراس النوع المخصص حلاً:

interface A {
    member: string;
}

function instanceOfA(object: any): object is A {
    return 'member' in object;
}

var a: any = { member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}

يسمح هذا الأسلوب بالتحقق في وقت التشغيل من توافق الواجهة دون الحاجة إلى مثيل الكلمة الأساسية.

في المواقف التي يجب فيها التحقق من أعضاء متعددين، يمكن تقديم خاصية التمييز. يتطلب هذا النهج إدارة أدوات التمييز الخاصة بك وضمان التفرد لتجنب الصراعات:

interface A {
    discriminator: 'I-AM-A';
    member: string;
}

function instanceOfA(object: any): object is A {
    return object.discriminator === 'I-AM-A';
}

var a: any = { discriminator: 'I-AM-A', member: "foobar" };

if (instanceOfA(a)) {
    alert(a.member);
}

من خلال استخدام أدوات حماية أو تمييز للأنواع المخصصة، يمكنك إجراء عمليات فحص نوع الواجهة بشكل فعال في وقت التشغيل، مما يعزز قوة تطبيقات TypeScript الخاصة بك.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3