نحوه انتخاب نوع خود: رابط های TypeScript در مقابل انواع

در حین کار با Typescript تا به حال به این فکر کرده ایم که اگر نوع و رابط یکسان کار می کند پس چرا ما 2 گزینه داریم؟ چرا ما نیاز داریم نوع یا رابط حتی یکی از آنها برای ما کافی است؟
اما در واقع، حتی آنها مشابه کار می کنند، آنها با یکدیگر متفاوت هستند.
بنابراین در این وبلاگ تمام ابهامات مربوط به نوع و رابط را برطرف خواهم کرد.
پس بیایید شروع کنیم.
در تایپ اسکریپت، نوع و رابط برای تعریف انواع سفارشی یعنی شکل شیء استفاده می شود.
در آنجا سینتکس به صورت زیر نوشته می شود:
// Defining a type
type Student = {
name: string;
age: number;
};
// Defining an interface
interface Teacher {
name: string;
age: number;
}
تفاوت آنها چگونه است؟
1)ادغام اعلامیه پشتیبانی رابطادغام اعلامیه به این معنی است که ما می توانیم چندین رابط را با یک نام اعلام کنیم و Typescript آنها را در یک رابط واحد ادغام می کند.
مثلا:
interface Teacher {
name: string;
}
interface Teacher {
age: number;
}
interface Teacher {
subject: string;
}
const teacher: Teacher = {
name: "John",
age: 30,
subject:"Mathematics"
};
از سوی دیگر، ما نمی توانیم انواع را ادغام کنیم در تایپ اسکریپت
2)کلمه کلیدی را تایپ کنید از ویژگی های محاسبه شده پشتیبانی می کند اما رابط پشتیبانی نمی کند.
ویژگی های محاسبه شده به چه معناست؟
خواص محاسبه شده راهی برای تولید پویا نام ویژگی ها در یک شی به معنای واقعی کلمه در TypeScript است.
در TypeScript، ویژگی های محاسبه شده توسط نوع کلمه کلیدی اما نه توسط رابط کلمه کلیدی. این بخاطر این است که رابط اعلانی است که شکل یک شی را توصیف می کند و ویژگی های آن باید در زمان کامپایل شناخته شود. از سوی دیگر، نوع روشی برای تعریف یک نوع سفارشی است و به انعطاف پذیری بیشتری از جمله توانایی تعریف ویژگی های محاسبه شده اجازه می دهد.
در اینجا مثالی از استفاده از خصوصیات محاسبه شده در a آورده شده است نوع تعریف:
type Student = {
name: string;
age: number;
[key: string]: unknown; // Computed property
};
const student: Student = {
name: "John",
age: 30,
address: "123 ABC", // Computed property
phone: "111-111-1111", // Computed property
};
نوع زمانی که میخواهیم key:value را که از API میآید ذخیره کنیم بسیار مفید است، زیرا دقیقاً درباره key:vaue که از پاسخ API میآید نمیدانیم و در آینده اگر keys:values جدیدی اضافه یا حذف شود، نمیدانیم. باید نگران حذف آن از کد باشید.
بنابراین امیدوارم این وبلاگ ابهامات را برطرف کند نوع و رابط.
اگر چیز جالب تری سراغ دارید لطفا در نظرات به اشتراک بگذارید!!