"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > الاختلافات بين `Object` و `{}` و `object` في TypeScript

الاختلافات بين `Object` و `{}` و `object` في TypeScript

تم النشر بتاريخ 2024-07-30
تصفح:258

في TypeScript، عندما نريد تعريف نوع كائن، هناك العديد من الخيارات المختصرة مثل "Object" و"{}" و"object". ما هو الفرق بينهم؟

كائن (بأحرف كبيرة)

يصف الكائن (بأحرف كبيرة) الخصائص المشتركة لجميع كائنات JavaScipt. يتم تعريفه في ملف lib.es5.d.ts الذي يأتي مع مكتبة TypeScript.

The Differences Between

كما ترون، فهو يتضمن بعض الخصائص الشائعة مثل toString()، valueOf()، وما إلى ذلك.

لأنه يؤكد فقط على تلك الخصائص المشتركة بين كائنات JavaScript. لذلك يمكنك تعيين كائنات قابلة للتخصيص مثل السلسلة، والمنطقية، والرقم، والرمز الكبير، والرمز لها، ولكن ليس العكس.

The Differences Between

{}

{} يصف كائنًا لا يحتوي على أعضاء خاصة به، مما يعني أن TypeScript سوف يشتكي إذا حاولت الوصول إلى أعضاء خاصيته:

The Differences Between

من مثال الكود أعلاه، يمكننا أن نرى أن {} والكائن (بالأحرف الكبيرة) لهما نفس الميزات. أي أنه يمكنه فقط الوصول إلى تلك الخصائص الشائعة (حتى لو كان منطق كود JavaScript صحيحًا)، ويمكن تعيين جميع الكائنات القابلة للتخصيص لها، وما إلى ذلك.

وذلك لأن النوع {} يمكنه الوصول إلى تلك الخصائص الشائعة من خلال سلسلة النموذج الأولي، كما أنه لا يحتوي على خصائص خاصة به. لذا فهو يتصرف بنفس نوع الكائن (بأحرف كبيرة). لكنها تمثل مفاهيم مختلفة.

كائن (بأحرف صغيرة)

الكائن (بأحرف صغيرة) يعني أي نوع غير بدائي، والذي يتم التعبير عنه بالكود كما يلي:

type PrimitiveType =
  | undefined
  | null
  | string
  | number
  | boolean
  | bigint
  | symbol;

type NonPrimitiveType = object;

وهذا يعني أن جميع الأنواع غير البدائية غير قابلة للتخصيص لها، والعكس صحيح.

The Differences Between

وجبة خفيفة: سجل

في الكود المصدري للعديد من المكتبات الشائعة، قد نرى Record لتمثيل الأنواع غير الأولية. له نفس تأثير الكائن (بأحرف صغيرة)، لكنه أكثر دلالية.


إذا وجدت المحتوى الخاص بي مفيدًا، من فضلك فكر في الاشتراك . أرسل _ رسالة إخبارية أسبوعية كل يوم أحد _ تحتوي على آخر تحديثات تطوير الويب. شكرا لدعمك!

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/zacharylee/the-differences-between-object-and-object-in-typescript-f6f?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3