تفاوت Interface و Type در تایپ اسکریپت چیست؟
تعریف نوع ها با interface
و type
چه فرقی می کند؟ برای مثال: منبع: https://rasanika.com
interface User {
id: number
name: string
}
// یا
type User = {
id: number
name: string
}
1 پاسخ
37یک برنامهنویس @a_programmer
آموزش برنامه نویسی9 ماه قبل
آموزش برنامه نویسی9 ماه قبل
اینترفیس (Interface) و نام مستعار (Type Alias) بسیار شبیه هم هستند و در بسیاری از موارد به طور دلخواه می توانیم هر کدام را که خواستیم انتخاب کنیم. تفاوت مهمی که وجود دارد: در صورتی که از type
استفاده کنیم امکان اضافه کردن ویژگی های بیشتر به آن وجود ندارد ولی interface
همیشه قابل گسترش (extendable) است و می توانیم بعدا ویژگی های بیشتری به نوع موردنظر اضافه کنیم. برای مثال: منبع: https://rasanika.com
نحوه extend کردن type
:
type Animal = {
name: string
}
type Bear = Animal & {
honey: boolean
}
const bear = getBear();
bear.name;
bear.honey;
نحوه extend کردن interface
:
interface Animal {
name: string
}
interface Bear extends Animal {
honey: boolean
}
const bear = getBear()
bear.name
bear.honey
بعد از تعریف type
امکان تغییر آن نیست:
type Window = {
title: string
}
type Window = {
items: string[]
}
// خطا! نام نوع تکراری است
افزودن فیلد جدید به interface
ممکن است:
interface Window {
title: string
}
interface Window {
items: string[]
}
window.items.join(' ') // اوکی