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

لماذا تعتبر حراس الكتابة ضرورية؟ استكشاف الأنواع المختلفة وحالات استخدامها

تم النشر بتاريخ 2024-11-08
تصفح:750

Why Are Type Guards Necessary? Exploring Different Types and Their Use Cases

لماذا تعتبر حراس الكتابة ضرورية؟ استكشاف الأنواع المختلفة وحالات استخدامها

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

ما هي حراس الكتابة؟

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

لماذا تعتبر حراس الكتابة ضرورية؟

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

الأنواع الشائعة من واقيات الكتابة وحالات استخدامها

1. نوع نوع الحراس

حالة الاستخدام: التحقق الأساسي من النوع البدائي.
مثال:

function printValue(value: string | number) {
  if (typeof value === "string") {
    console.log(`String value: ${value.toUpperCase()}`);
  } else {
    console.log(`Number value: ${value.toFixed(2)}`);
  }
}

شرح: typeof فعال مع الأنواع البدائية (سلسلة، رقم، منطقية). يسمح للوظيفة بالتعامل مع أنواع السلسلة والأرقام بشكل مختلف.

2. حراس النوع المخصص (هي كلمة رئيسية)

حالة الاستخدام: للمنطق المعقد، التحقق من الأشكال أو الواجهات المخصصة.

مثال:

 interface Square {
    side: number;
  }
  interface Circle {
    radius: number;
  }

  function isSquare(shape: Square | Circle): shape is Square {
    return (shape as Square).side !== undefined;
  }

  function calculateArea(shape: Square | Circle) {
    if (isSquare(shape)) {
      return shape.side * shape.side;
    } else {
      return Math.PI * shape.radius * shape.radius;
    }
  }

شرح: تتيح لك أدوات حماية النوع المخصصة تحديد الوظائف التي تتحقق من سمات معينة لتحديد النوع. وهنا يتحقق isSquare من وجود الخاصية الجانبية.

3. في واقيات نوع المشغل

حالة الاستخدام: التحقق مما إذا كان الكائن له خاصية معينة.
مثال:

 interface Car {
    drive(): void;
  }
  interface Boat {
    sail(): void;
  }

  function move(vehicle: Car | Boat) {
    if ("drive" in vehicle) {
      vehicle.drive();
    } else {
      vehicle.sail();
    }
  }

شرح: يتحقق عامل التشغيل من وجود خاصية، مما يساعد TypeScript على فهم النوع والسماح بالوصول إلى الطرق ذات الصلة.

خاتمة

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

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/naymhdev/why-are-type-guards-necessary-exploring-different-types-and-their-use-cases-2f8e?1 إذا كان هناك أي انتهاك، من فضلك اتصل بـ [email protected]
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3