ESC را فشار دهید تا بسته شود

تفاوت بین تایپ‌های object، Object و {} در تایپ اسکریپت

وقتی توی تایپ اسکریپت یک آبجکت رو تعریف می‌کنین برای انتخاب تایپ اون آبجکت شما چندین انتخاب دارین مثل تایپ های Object و object و <strong>{}</strong>

اما خب تفاوت‌های این تایپ ها چیه؟

بررسی انواع تایپ های آبجکت

بررسی تایپ object (با o کوچک)

این نوع تایپ، شامل تمام مقادیر non-primitive ها میشه. (Array, object, functions)

اگر نمیدونین non-primitive ها چیا هستن؟ باید عرض کنم که توی جاوا اسکریپت آرایه‌ها، آبجکت‌ها و فانکشن ها، non-primitive به حساب میان.

اگر میخواین بیشتر راجع‌به دیتا تایپ‌های primitive و non-primitive بدونین این مقاله هم بهتون کمک می‌کنه

بریم توی کد تایپ object رو برای مقادیر non-primitive بررسی کنیم:

non-primitive-test

بررسی تایپ Object (با O بزرگ)

این نوع تایپ، عملکرد یا functionality تمام آبجکت ها (object) رو نشون می‌ده مثلا متدهایی مثل ()toString یا ()valueOf و … رو توی خودش داره و همینطور شامل تایپ های بیشتری هم می‌شه بجز null و undefined و همچنین چون type-safe کمتری نسبت به تایپ object داره و جز موارد خاص استفاده از تایپ Object توصیه نمی‌شه.

چون ممکنه یکم گیج بشین که functionality آبجکت ها دیگه شامل چه چیزایی میشه بریم ساجست خود تایپ اسکریپت رو ببینیم که چی بهمون میده :

functionality types

و همینطور گفتیم تایپ های بیشتری نسبت به object رو ساپورت میکنه بجز null و undefined بریم توی کد ببینیم :


بررسی تایپ {}

این نوع تایپ هم دقیقا مثل تایپ object عمل می‌کنه اما یک آبجکت خالی رو تعریف می‌کنه که هیچ property یا عضوی توی خودش نداره و اگر شما سعی کنین به property هاش دسترسی داشته باشین از طرف تایپ اسکریپت به خطا می‌خورین.

بریم توی کد بررسی کنیم بازم :

توی کد بالا ما سعی کردیم به property که age هست دسترسی داشته باشیم اما به خطا خوردیم که همچین چیزی توی تایپ {} تعریف نشده.

اما می‌تونین به تمام ویژگی هایی که توی تایپ Object (با O بزرگ) دسترسی داشته باشیم

بریم اینم چک کنیم ببینیم :


خلاصه

  • تایپ object برای نشون دادن مقادیر non-primitive ها استفاده می‌شه
  • تایپ Object عملکرد یا همون functionality که توی تمام object ها وجود دارن رو نشون می‌ده
  • تایپ {} به یک آبجکت خالی اشاره می‌کنه که به صورت پیشفرض هیچ property نداره

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *