تفاوت بین Interfaces و Types در TypeScript چیست؟

تفاوت بین انواع و رابط ها در TypeScript قبلا واضح تر بود، اما با آخرین نسخه های TypeScript، آنها بیشتر شبیه به هم می شوند.
واسط ها اساساً راهی برای توصیف اشکال داده، به عنوان مثال، یک شی هستند.
نوع تعریفی از یک نوع داده است، به عنوان مثال، یک اتحادیه، اولیه، تقاطع، تاپل یا هر نوع دیگری.
چند تفاوت در برخی موضوعات:
1-توابع:
هر دو را می توان برای توصیف شکل یک شی یا یک امضای تابع استفاده کرد. اما نحو متفاوت است.
رابط
نقطه رابط {
x: عدد
y: تعداد
}
رابط ست پوینت {
(x: عدد، y: عدد): باطل;
}
تایپ کنید
نقطه = {
x: عدد
y: تعداد
};
نوع SetPoint = (x: عدد، y: عدد) => void;
2-ادغام اعلامیه
برخلاف نام مستعار نوع، یک رابط را می توان چندین بار تعریف کرد و به عنوان یک رابط واحد در نظر گرفته می شود (با اعضای همه اعلان ها که ادغام می شوند).
3- گسترش و اجرا:
در تایپ اسکریپت به راحتی می توانیم رابط ها را گسترش و پیاده سازی کنیم. اگرچه این امکان با انواع وجود ندارد.
رابط ها در TypeScript می توانند کلاس ها را گسترش دهند، این یک مفهوم بسیار عالی است که در برنامه نویسی شی گرا بسیار کمک می کند. همچنین میتوانیم کلاسهایی ایجاد کنیم که رابطهای پیادهسازی کنند.
4-تقاطع (&):
تقاطع به ما امکان می دهد چندین نوع را در یک نوع واحد ترکیب کنیم. برای ایجاد یک نوع تقاطع، باید از کلمه کلیدی (&) استفاده کنیم،
نوع نام = {
نام: “رشته”
};
نوع سن = {
سن: تعداد
};
نوع شخص = نام و سن.
نکته خوب اینجاست که میتوانیم یک نوع تقاطع جدید با ترکیب دو رابط ایجاد کنیم، اما نه برعکس. ما نمی توانیم یک رابط ترکیبی از دو نوع ایجاد کنیم، زیرا کار نمی کند،
نام رابط {
نام: “رشته”
};
سن رابط {
سن: تعداد
};
نوع شخص = نام و سن.
5-اتحادیه (|):
انواع اتحادیه به ما اجازه می دهد تا نوع جدیدی ایجاد کنیم که می تواند یک یا چند نوع دیگر داشته باشد. برای ایجاد یک نوع اتحادیه، باید از | استفاده کنیم کلمه کلیدی،
نوع Man = {
نام: “رشته”
};
نوع زن = {
نام: “رشته”
};
نوع Person = Man | زن؛
مشابه تقاطعها، میتوانیم یک نوع اتحادیه جدید با ترکیب دو رابط ایجاد کنیم، برای مثال، اما نه برعکس:
رابط مرد {
نام: “رشته”
};
زن رابط {
نام: “رشته”
};
نوع Person = Man | زن؛
**خلاصه نام مستعار نوع در مقابل رابط ها
مسافت پیموده شده شما ممکن است متفاوت باشد، اما تا جایی که امکان دارد، به دلیل انعطاف پذیری و نحو ساده تر، نام مستعار را تایپ می کنم. به این معنا که من نام مستعار نوع را انتخاب می کنم به جز اینکه به طور خاص به ویژگی هایی از یک رابط نیاز دارم.
در بیشتر موارد، شما همچنین می توانید بر اساس ترجیح شخصی خود تصمیم بگیرید، اما با انتخاب خود سازگار باشید – حداقل در یک پروژه خاص.
برای کامل بودن، باید اضافه کنم که در انواع بحرانی عملکرد، بررسی مقایسه رابط می تواند سریعتر از نام مستعار باشد. من هنوز متوجه نشدم که این یک مشکل است.