في TypeScript، عندما نريد تعريف نوع كائن، هناك العديد من الخيارات المختصرة مثل "Object" و"{}" و"object". ما هو الفرق بينهم؟
يصف الكائن (بأحرف كبيرة) الخصائص المشتركة لجميع كائنات JavaScipt. يتم تعريفه في ملف lib.es5.d.ts الذي يأتي مع مكتبة TypeScript.
كما ترون، فهو يتضمن بعض الخصائص الشائعة مثل toString()، valueOf()، وما إلى ذلك.
لأنه يؤكد فقط على تلك الخصائص المشتركة بين كائنات JavaScript. لذلك يمكنك تعيين كائنات قابلة للتخصيص مثل السلسلة، والمنطقية، والرقم، والرمز الكبير، والرمز لها، ولكن ليس العكس.
{} يصف كائنًا لا يحتوي على أعضاء خاصة به، مما يعني أن TypeScript سوف يشتكي إذا حاولت الوصول إلى أعضاء خاصيته:
من مثال الكود أعلاه، يمكننا أن نرى أن {} والكائن (بالأحرف الكبيرة) لهما نفس الميزات. أي أنه يمكنه فقط الوصول إلى تلك الخصائص الشائعة (حتى لو كان منطق كود JavaScript صحيحًا)، ويمكن تعيين جميع الكائنات القابلة للتخصيص لها، وما إلى ذلك.
وذلك لأن النوع {} يمكنه الوصول إلى تلك الخصائص الشائعة من خلال سلسلة النموذج الأولي، كما أنه لا يحتوي على خصائص خاصة به. لذا فهو يتصرف بنفس نوع الكائن (بأحرف كبيرة). لكنها تمثل مفاهيم مختلفة.
الكائن (بأحرف صغيرة) يعني أي نوع غير بدائي، والذي يتم التعبير عنه بالكود كما يلي:
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
وهذا يعني أن جميع الأنواع غير البدائية غير قابلة للتخصيص لها، والعكس صحيح.
في الكود المصدري للعديد من المكتبات الشائعة، قد نرى Record
إذا وجدت المحتوى الخاص بي مفيدًا، من فضلك فكر في الاشتراك . أرسل _ رسالة إخبارية أسبوعية كل يوم أحد _ تحتوي على آخر تحديثات تطوير الويب. شكرا لدعمك!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3