یک جاوااسکریپت دولوپر همش در چالشه که چرا باید اینو یاد بگیرم؟ مخصوصا که گستردگی ابزارهای موجود (به ویژه سمت فرانت اند) بسیار زیاده و دولوپرا رو سردرگم میکنه. واقعیت امر اینه که منحنی یادگیری هیچوقت در یک نقطه متوقف نمیشه و همیشه سوالات متعددی در ذهن آدم ایجاد میکنه. یکی از این سوالات برای کسانیکه جاوااسکریپت کار میکنن میتونه این باشه که مجبورم تایپ اسکریپت یاد بگیرم؟
تایپ اسکریپت یک زبانیه که اومده به جاوااسکریپت قدرت بده و توسعه با جاوااسکریپت رو در مقیاس های بزرگ ساده تر کنه. همونطور که میدونید جاوااسکریپت یک زبان با تایپ داینامیک هست و بررسی اکثر تایپ ها در زمان اجرا انجام میشه و اینجاست که تایپ اسکریپت وارد میشه و قبل از اینکه جاوااسکریپت بخواد اجرا بشه، تایپِ استاتیک رو به این زبان اضافه میکنه و در نهایت اگه مشکلی نبود اون رو به جاوااسکریپت کامپایل میکنه و کد نهایی در هر محیطی که از جاوااسکریپت پشتیبانی بشه اجرا میشه.
تایپ اسکریپت نهایتا به جاوااسکریپت کامپایل میشه و توی هر محیطی که جاوااسکریپت رو پشتیبانی کنه اجرا میشه
تایپ اسکریپت رو میشه به عنوان یک پاسخ دندان شکن جاوااسکریپت به زبان های تایپ قوی مثل Java و C# دونست؛ و جالبه بدونید که خالق این زبان یکی از مشارکت کنندگان اصلی C# بود.
معمولا وقتی میخوایم چیزی رو یاد بگیریم، میریم سراغ اینکه ببینیم نظر بقیه چیه و چقدر ازش استفاده میشه یا اصلا ارزش این رو داره که بخوایم وقت بذاریم و یاد بگیریمش؟
سایت stack-overflow هرسال یه نظرسنجی ای میان دولوپرا انجام میده با این عنوان که عاشق چه زبانی هستن یا اینکه ازش وحشت دارن. توی عکس زیر که مربوط به نظرسنجی 2021 هست مشخصه که تایپ اسکریپت سومین زبانیه که دولوپرا حس خوبی نسبت بهش دارن.
همچنین طبق یه نظرسنجی دیگه توسط همین سایت، تحت این عنوان که برنامه نویسا دوست دارن چه زبانی رو یاد بگیرن، تایپ اسکریپت و جاوااسکریپت به ترتیب دوم و سومین زبان بعد از پایتون هستن که توسط برنامه نویسا انتخاب شده که در عکس زیر قابل مشاهده هست.
پس طبق آمار منتشر شده که میتونین خودتون هم از این لینک آمار کاملش رو ببینید مشخصه که تایپ اسکریپت مورد استقبال خیلی از برنامه نویسا هست و استفاده زیادی ازش میشه.
چرا طبق آمار، جاوااسکریپت استقبال کنندگان کمتری نسبت به تایپ اسکریپت داره؟ قبل از اینکه این سوال رو بررسی کنیم، این رو در نظر بگیرید که جاوااسکریپت و تایپ اسکریپت دو چیز جداناشدنی از هم هستن و در واقع تایپ اسکریپت رو میشه یک سطح بالاتر از جاوااسکریپت در نظر گرفت که فقط یک سری ویژگی هایی رو به این زبان اضافه میکنه. پس در واقع شما با استفاده از تایپ اسکریپت در حال استفاده از جاوااسکریپت هستید، با یک سری ویژگی و مزیت های بیشتر.
با استفاده از تایپ اسکریپت در حال استفاده از جاوااسکریپت هستید، با یک سری ویژگی ها و مزیت های بیشتر.
اشتباهات در برنامه نویسی غیرقابل اجتناب هستن. گاهی اوقات فقط یک اشتباه تایپی ممکنه باعث بشه زمان زیادی رو صرف پیدا کردن مشکل در پروژه بکنیم. تصویر کنید قراره یک سیستم مالی بزرگ برای یک شرکت ایجاد کنیم که بطور خودکار حقوق کارکنان رو پردازش کنه. قبل از هرچیزی این سیستم باید به اندازه کافی قابل اعتماد باشه. اینطور نیست؟
در ادامه باهم یک مثال ساده رو بررسی میکنیم.
فرض کنید یک تابع پیچیده ای داریم که قراره میزان دستمزد یک کارمند رو به اضافه پاداشی که میگیره محاسبه کنه. در واقع این تابع دوتا ورودی دستمزد و پاداش رو میگیره و مجموع اونارو برمیگردونه :)
این تابع در جاوااسکریپت به صورت زیر خواهد بود:
سیستم قراره حقوق کارمندان رو بر اساس این تابع محاسبه کنه و بطور خودکار پول رو به حساب اونها وارد کنه. با فرض اینکه این تابع دو عدد به عنوان ورودی بگیره همه چی اوکیه و بدون نقص کار میکنه، اما تصور کنید که مشکلی وجود داشته باشه و یکی از ورودی ها به جای عدد، یک رشته باشه؛ نتیجه چی میشه؟
چون جاوااسکریپت نمیدونه ورودی های ما چی هستن، در زمان اجرا خودش تصمیم میگیره و توی جمع کردن اونارو به رشته تبدیل میکنه و نتیجه این میشه که خروجی به جای اینکه 505 بشه، 5005 میشه. البته وجود این مشکل به نفع کارمند میشه اما خب چطوری از رفع چنین مشکلات احتمالی جلوگیری کنیم؟
راه حل اینه که تایپ ورودی هارو مشخص کنیم تا اگه اشتباها رشته به عنوان ورودی ارسال شد، اجازه این کار داده نشه. توی جاوااسکریپت هیچ تایپ استاتیکی وجود نداره و اینجاست تایپ اسکریپت مارو نجات میده:
تابعی که در عکس بالا مشخصه، همون تابعیه که در جاوااسکریپت نوشتیمش، منتهی اینبار در تایپ اسکریپت که تونستیم تایپ ورودی هارو توش مشخص کنیم که از نوع عدد هستن.
اینبار اگه بخوایم از این تابع استفاده کنیم، تایپ اسکریپت قبل از اینکه بخواد کد رو اجرا کنه اگه مشکلی وجود داشته باشه نمیزاره کد به جاوااسکریپت کامپایل بشه؛ پس در نتیجه شما نمیتونید یک رشته به عنوان ورودی به تابع ارسال کنید و این باعث میشه که از احتمال وجود خطا در توسعه نرم افزار کاسته بشه.
هرچند که استفاده از تایپ اسکریپت در همه پروژه ها ضروری و لازم نیست اما قابلیت هایی که در این زبان وجود داره باعث افزایش توسعه پذیری و کاهش احتمال وجود خطا خواهد شد.
از طرفی استفاده از تایپ اسکریپت بخاطر مشکلاتی که در توسعه نرم افزار با جاوااسکریپت وجود داره روز به روز در حال افزایشه و به یکی از اصلی ترین ابزارهای مورد استفاده در تیم های کوچک و بزرگ مبدل شده.