سلام استاد
ببخشید استاد در مبحث function overloading در جلسه 7 آموزش TS یه سوالی برام پیش اومده و اون این هست که من اگر یه تابع تعریف کنم به عنوان مثال تابع total با دو ورودی xو y و نوع هر دو رو string در نظر بگیرم ؛ اگر مجددا بخوام زیر تابع اول یک overload برای تابع total ایجاد کنم و اینبار نوع x و y رو از نوع [ ] any قرار بدم با این ارور مواجه میشم :
چیزی که متوجه شدم ممکنه بخاطر این باشه که تایپ [ ] any تایپ string رو هم پوشش میده در نسخه های جدیدتر TS ? و بخاطر همین دیگه یک overload از نوع string رو قبول نمیکنه ؟؟
ممنون میشم راهنمایی بفرمایید
سلام
اگر اشتباه نکنم در any این مشکل هست چون تایپ نداره
ولی اجازه بدید یه تحقیق کنم تا مطمئن بشم
تشکر استاد بابت پیگیری
سلام مجدد خدمت جناب استاد مدائنی
عذرخواهی میکنم استاد جثارتا میخواستم بپرسم فرصت کردید موضوع فوق رو بررسی کنید ؟
عذر خواهی میکنم فراموش کردم
فردا بررسی میکنم
خواهش میکنم استاد ؛ لطف میکنید
بازم ممنون بابت پاسخگویی سریع
تشکر استاد تا حدود زیادی در درک مسئله بهم کمک کرد
اینجوری که من متوجه شدم در واقع TS سعی داره تا همون typeless بودن متغیر های ورودی توابع در JS رو یه جورایی با FUNCTION OVERLOADING و union types معادلسازی کنه البته من بصورت زیر تابع رو پیاده سازی کردم با استفاده از 2 تایپ any و [ ] any و این میتونه تمام overload های مد نظر رو پوشش بده و دیگه اصلا نیازی به overload کردن تابع نیست
از طرفی بر اساس اینکه TS بعنوان یک superset برای JS هست میتونیم در تعریف متغیرهای ورودی توابع از دستورات خود JS استفاده کنیم و دیگه ضرورتی برای استفاده از دستورات TS در این مورد نیست مثل تابع javascript در تصویر زیر :
ضمن سلام مجدد خدمت استاد مدائنی
ببخشید استاد من در مبحث function overloading با یک مسئله دیگه برخورد کردم ؛ بر طبق فرمایشات شما در جلسه 7 آموزش TS من یک تابع رو با تعداد پارامترهای ورودی مختلف پیاده سازی کردم بصورت زیر :
سوالی که دارم این هست که الان با توجه به اینکه در overload اول تابع ؛ 4 پارامتر ورودی برای اون تعریف کردم ؛ ولی در زمان return به پارامترهای سوم و چهارم در داخل بدنه تابع دسترسی ندارم و به همین علت نمیتونم عملیاتی رو روی اونها اعمال کنم یا مقدار خروجی تعریف کنم با استفاده از اونها .
سوال دومم این هست که در overload اول و دوم تابع در زمان پیاده سازی تابع ؛ نوع پارامتر ورودی سوم تابع (c) رو یکبار از نوع string و یکبار از نوع number تعریف کردم و هیچگونه مشکلی هم برخورد نکردم ولی در زمان فراخوانی اگر نوع داده سوم رو از نوع string قرار بدم با ارور مواجه میشم و فقط نوع داده number رو قبول میکنه .
از طرفی پس از اجرای برنامه هم در خروجی فقط مقدار 2 پارامتر اول و دوم رو برمیگردونه با توجه به تعریف return تابع و در واقع مثل این میمونه که پارامترهای دوم به بعد در تابع نادیده گرفته میشن یا اصلا وجود ندارن یا به عبارت دیگه مثل این هست که بدنه تعریف شده برای تابع فقط متعلق به آخرین تابع overload تعریف شده هست و نه همه overload های موجود از تابع .
ممنون میشم راهنمایی بفرمایید