سلام دوستان. می‌خوایم توی قسمت پنجم از مجموعه پست‌های سوالات مصاحبه فرانت‌اند سوالات زیر رو بررسی کنیم:

۴۱‍. Type و Interface توی تایپ‌اسکریپت چه تفاوت‌هایی با هم دارن؟
۴۲. درباره Core Web Vitals چی می‌دونید؟
۴۳. کاربرد Event Delegation توی جاوااسکریپت چیه؟
۴۴. CORS چیه؟
۴۵. توی تایپ‌اسکریپت عبارت keyof typeof [value] رو توضیح بدید
۴۶. توی CSS واحدهای rem و em چه فرقی با هم دارن؟
۴۷. دستور git stash چه کار می‌کنه؟
۴۸. کلمه‌کلیدی infer توی تایپ‌اسکریپت چه کار می‌کنه؟
۴۹. چرا می‌گیم ماژول‌های جاوااسکریپت Singleton هستن؟
۵۰. منظور از Progressive Enhancement توی توسعهٔ برنامه‌های فرانت‌اند چیه؟
 

مثل پست‌های قبل این مجموعه می‌خوام یادی کنیم از عزیز. امیدوارم روحش شاد باشه و در آرامش ✨💚

بریم که سوالات رو بررسی کنیم.

 

 

۴۱‍. Type و Interface توی تایپ‌اسکریپت چه تفاوت‌هایی با هم دارن؟

این دو ویژگی شباهت‌های زیادی به هم دارن و توی بیشتر موارد می‌تونن به جای همدیگه استفاده بشن. اما تفاوت‌های زیر اونها رو از هم دیگه متمایز می‌کنه:

 

کار با مقادیر Primitive

برای داشتن یک تایپ برای یک مقدار Primitive (مثل رشته و عدد) فقط می‌تونیم از Type استفاده کنیم. به عبارت دیگه، از Interface فقط می‌تونیم برای مقادیر آبجکتی استفاده کنیم

 

نحوهٔ ادغام کردن تایپ‌ها و اینترفیس‌ها

ما توی یک برنامه می‌تونیم چند اینترفیس با اسم‌های یکسان داشته باشیم که در این صورت اینترفیس‌ها با هم ادغام میشن. اما این کار برای تایپ‌ها شدنی نیست و ما خطا می‌گیریم.

interface Animal {
  run(): any;
}

// ok
interface Animal {
  eat(): any;
}

type Person = {
  name: string;
}

// Error: Duplicate identifier 'Person'
type Person = {
  age: number;
}