0Pricing
TypeScript Academy · درس

التحقق من الخصائص الزائدة وحداثة الكائنات

استكشفوا سبب تسبب الخصائص الزائدة في أخطاء ضمن بعض السياقات

التحقق من الخصائص الزائدة وحداثة الكائنات درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ما الحداثة؟

الحداثة مفهوم في TypeScript تُعدّ فيه القيم الحرفية للكائنات «حديثة» عند إنشائها. وتخضع الكائنات الحديثة لفحص صارم للخصائص الزائدة لا تخضع له الكائنات الموسّعة.

interface Point { x: number; y: number; }
const p: Point = { x: 1, y: 2, z: 3 }; // Error: 'z' not in Point

فحص الخصائص الزائدة عمليًا

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

function setPoint(p: { x: number; y: number }) {}
setPoint({ x: 1, y: 2, z: 3 }); // Error: 'z' excess property

سبب وجود فحص الخصائص الزائدة

يكتشف هذا الفحص الأخطاء الإملائية والخصائص غير المقصودة في كائنات الإعداد، وهي من المصادر الشائعة للأخطاء في JavaScript.

interface Options { timeout: number; retry?: boolean; }
const opts: Options = { timeout: 3000, retrey: true }; // Error — typo!

كيفية فقدان الحداثة

بمجرد إسناد قيمة حرفية لكائن إلى متغير وسيط، لا تعود «حديثة»، ولا ينطبق فحص الخصائص الزائدة على النوع الموسّع.

const opts = { timeout: 3000, retry: true, extra: "surprise" };
const o: Options = opts; // No error — freshness lost on assignment

تجاوز الحداثة بتأكيدات النوع

يؤدي استخدام تأكيدات النوع as أيضًا إلى تجاوز فحوص الخصائص الزائدة، ما قد يخفي الأخطاء.

const o = { timeout: 3000, typo: true } as Options; // No error

فحص الخصائص الزائدة مع أنواع التقاطع

قد تخفف أنواع التقاطع أحيانًا من فحوص الخصائص الزائدة، لأن الخصائص الإضافية قد تنتمي إلى أحد أعضاء التقاطع.

type A = { x: number };
type B = { y: number };
const ab: A & B = { x: 1, y: 2 }; // OK

الخصائص للقراءة فقط والخصائص الزائدة

ينطبق فحص الخصائص الزائدة على أنواع الكائنات للقراءة فقط أيضًا — فالقاعدة تتعلق بالبنية الهيكلية، لا بقابلية التغيير.

interface Cfg { readonly host: string; }
const c: Cfg = { host: "localhost", port: 3000 }; // Error

توقيعات الفهرسة والخصائص الزائدة

تسمح إضافة توقيع فهرسة إلى نوع بأي خصائص إضافية مفاتيحها سلاسل نصية، ما يعطّل فحص الخصائص الزائدة لهذا النوع عمليًا.

interface Flexible { name: string; [key: string]: unknown; }
const f: Flexible = { name: "ts", extra: true }; // OK

الخصائص الاختيارية والحداثة

لا تخفف الخصائص الاختيارية من فحص الخصائص الزائدة. فالخاصية غير المدرجة إطلاقًا — حتى إن كانت اختيارية — يُبلَّغ عنها بوصفها زائدة.

interface Shape { color?: string; }
const s: Shape = { color: "red", size: 10 }; // Error: 'size' excess

أنماط عملية

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

// Option 1: intermediate variable (freshness lost)
const cfg = { timeout: 3000, debugMode: true };
const o: Options = cfg;
// Option 2: index signature in interface

مراجعة: الحداثة

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

تحقق سريع

متى لا ينطبق فحص الخصائص الزائدة؟

ما تعلمته

تحميك الحداثة وفحص الخصائص الزائدة من الأخطاء الإملائية والخصائص غير المقصودة في القيم الحرفية للكائنات. افهم متى تُفقد الحداثة لتجنب أخطاء الأنواع المفاجئة أو الأخطاء الخفية.

الأسئلة الشائعة

هل درس «التحقق من الخصائص الزائدة وحداثة الكائنات» مجاني؟

نعم — نص درس «التحقق من الخصائص الزائدة وحداثة الكائنات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «التحقق من الخصائص الزائدة وحداثة الكائنات»؟

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

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التحقق من الخصائص الزائدة وحداثة الكائنات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

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

جميع الدروس في هذه الدورة

  1. آليات توسيع الأنواع وتضييقها
  2. تحديد النوع السياقي: الاستدلال من السياق
  3. التحقق من الخصائص الزائدة وحداثة الكائنات
  4. تأكيدات const وas const
← العودة إلى TypeScript Academy