التحقق من الخصائص الزائدة وحداثة الكائنات
استكشفوا سبب تسبب الخصائص الزائدة في أخطاء ضمن بعض السياقات
التحقق من الخصائص الزائدة وحداثة الكائنات درس مجاني في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- آليات توسيع الأنواع وتضييقها
- تحديد النوع السياقي: الاستدلال من السياق
- التحقق من الخصائص الزائدة وحداثة الكائنات
- تأكيدات const وas const