TypeScript چیست؟ + مزایا و معایب تایپ اسکریپت
زبان تایپ اسکریپت TypeScript یک زبان برنامه نویسی منبع باز است که توسط مایکروسافت پشتیبانی می شود. وقتی صحبت از برنامه نویسی فرانت اند (Front-End) به میان می آید، اولین چیزی که به ذهن ما خطور می کند کلیدواژهایی از قبیل HTML، CSS، جاوا اسکریپت ، استایل و صفحات اسکریپت شده می باشد و اگر کمی عمیق تر به این موضوع نگاه کنیم با کلمات ترندتر و جدیدتری مثل Angular، React و Vue.js نیز مواجه خواهیم شد.
شاید این سوال برای شما پیش بیاید که با وجود جاوا اسکریپت چرا باید از یک زبان اسکریپتی دیگر به اسم TypeScript استفاده کرد، در این مقاله پس از معرفی کامل زبان تایپ اسکریپت و تحلیل رابطه اش با جاوا اسکریپت، مزایا و معایب آن را نیز به طور کامل توضیح خواهیم داد.
TypeScript چیست؟
اگر برنامه نویس هستید، حتما بارها اسم زبان تایپ اسکریپت به گوشتان خورده است، پس برایتان شوکه آور نیست اگر بدانید TypeScript هفتمین زبان پرکاربرد و سومین زبان در حال توسعه در سایت GitHub محسوب می شود و کامپایلرهای آن هر هفته تقریبا 5 میلیون بار از این سایت دانلود می شوند!
زبان برنامه نویسی TypeScript یک زبان منبع باز (Open-Source) است که توسط مایکروسافت برای کامپایل کردن کدهای جاوا اسکریپت توسعه داده شده است. زبان تایپ اسکریپت پس از معرفی در سال 2012، در حال پیشرفت مستمر بوده که همین موضوع باعث افزایش محبوبیت آن در میان توسعه دهندگان نیز شده است.
تفاوت تایپ اسکریپت و انگولار
اگرچه تفاوت بسیاری بین فریم ورک انگولار (یکی از فریم ورک های قدرتمند و محبوب جاوا اسکریپت) و زبان تایپ اسکریپت وجود دارد اما اوایل جامعه توسعه دهندگان و برنامه نویسان آن دو را باهم مرتبط می دانستند چرا که فریم ورک انگولار توسعه دهندگان را وادار به استفاده از TypeScript می کرد.
اگرچه تایپ اسکریپت کاملا بر پایه های جاوا اسکریپت شکل گرفته است اما هر کدام از این دو به عنوان یک زبان مجزا به کار گرفته می شوند. به عبارت دیگر زبان TypeScript یک ورژن پیشرفته تر از JavaScript است، بدین معنی که تمامی کدهای معتبر جاوا اسکریپت به عنوان کدهای معتبر این زبان نیز به شمار می روند.
در واقع زبان تایپ اسکریپت ادعای جانشینی جاوااسکریپت را ندارد بلکه به منظور تقویت و بروز رسانی ویژگی های آن توسعه داده شده است. هر اِلمانی که در JS نوشته می شود در TS نیز قابلیت پیاده سازی دارد. برای مثال :
- برنامه نویسی فرانت اند (Front-end) با استفاده از هر فریم ورک
- برنامه نویسی بک اند (Back-End) با استفاده از فریم ورک js
- توسعه اپلیکیشن های موبایل با استفاده از کتابخانه React
زبان TypeScript چگونه باعث پیشرفت جاوا اسکریپت می شود؟
مهمترین فاکتوری که توسط تایپ اسکریپت تقویت می شود سیستم تایپ (Type System) می باشد. تایپ در اصل به معنی نوع استفاده از داده های مورد نظر است، برای مثال ما از تایپ عددی (Numeric)، تایپ Boolean و ریسمانی (String) در برنامه نویسی استفاده می کنیم.
بطور سنتی زبان جاوا اسکریپت یک زبان Dynamically Typed است، بدین معنی که یک متغیر در جاوا اسکریپت می تواند بسته به موقعیت حاوی تکست، عدد و حتی تمام دارایی های یک دیتابیس باشد. در صورتی که زبان تایپ اسکریپت به طور دقیق محتویات یک متغیر را از پیش تعیین می کند.
برای مثال اگر یک برنامه نویس با استفاده از زبان تایپ اسکریپت یک تابع عددی بنویسد، برنامه نویسان دیگر قادر نخواهند بود به این تابع متن اضافه کنند. اما در جاوااسکریپت این موضوع محوریت خاصی ندارد و برنامه نویس به راحتی می تواند محتویات دیگری را به توابع اضافه کند.
کمپانی مایکروسافت برای حل مشکلات توسعه دهندگان در پروژه های با مقیاس بزرگتر تصمیم به طراحی یک زبان جدید گرفت، در آن زمان زبان ECMAscript 5 که بعدها به نام جاوااسکریپت تغییر نام پیدا کرد اولویت اول این کمپانی به شمار می رفت. اگرچه زبان جاوا اسکریپت همواره مورد توجه مایکروسافت بوده و هنوز هم بروزرسانی های متعددی برای آن منتشر می شود ولی توسعه دهندگانی که قصد داشتند از محیط های برنامه نویسی شی گرایی مطلق مانند جاوا یا سی شارپ (C#) به سمت جاوااسکریپت کوچ کنند با مشکلات و موانع بسیاری روبرو می شدند.
در حقیقت مایکروسافت سال ها از زبان سی شارپ به عنوان ورژن بهتر جاوا برای توسعه اپلیکیشن های سمت سرور (Server-Side) استفاده کرده است. علاوه بر این گزینه اول این کمپانی برای برنامه نویسی فرانت اند یا همان سمت کاربر (Client-Side) زبان برنامه نویسی جاوا اسکریپت محسوب می شود، برای همین مایکروسافت با خلق زبان TypeScript سعی کرده زبانی بر پایه جاوا اسکریپت، به علاوه ویژگی های بک اند زبان های دیگر را یکجا و در یک پکیج در اختیار برنامه نویسان قرار دهد.
زبان تایپ اسکریپت بخش اعظمی از سینتکس خود را زبان های برنامه نویسی شی گرا (Object-Oriented) وام گرفته است :
- اینترفیس (InterFace) : شکل دقیق متغیرها را تعیین می کند که توسط کامپایلر آن نیز بررسی می شود.
- کلاس (Class) : قابلیت پشتیبانی از کلاس های مختلف را دارد.
- تایپ های Enum : با پشتیبانی از تایپ های مختلف می توان مجموعه ای از مقادیر ثابت ساخت.
- قابلیت Generic : تایپ اسکریپت همانند زبان جاوا و سی شارپ، قابلیت استفاده دوباره از API ها را فراهم می کند.
- ماژول ها (Modules) : با استفاده از Export و Import می توان مقادیر بسیار زیادی از فایل ها را مدیریت کرد.
اگرچه بسیاری از ویژگی های ویژگی های بالا در ورژن های جدید جاوا اسکریپت نیز دیده می شوند اما برخی از آنها مثل چکیده سازی کلاس ها یا دسترسی به اصلاح کننده ها هنوز در JS دیده نمی شود در حالی که که زبان تایپ اسکریپت تمام این ویژگی ها را دارد.
مزایای TypeScript
1- تایپینگ محض (Strict Typing)
در حقیقت با استفاده از زبان تایپ اسکریپت هر متغیر همانگونه که ما تعریف می کنیم باقی می ماند، برای مثال اگر یک متغیر را به صورت عددی تعریف کنید تا انتها به همان صورت می ماند و اجازه دخل و تصرف در آن داده نمی شود.
2- تایپینگ ساختاری (Structural Typing)
فرآیند تعریف ساختار کلی که قرار است از آن استفاده کنید در زمان برنامه نویسی لازم الاجرا است. در زبان جاوا اسکریپت قابلیت های زیادی در اختیار برنامه نویسان قرار می دهد اما تایپ اسکریپت با استفاده از یک ساختار منحصر بفرد، امنیت بیشتری را فراهم می آورد.
3- مفسر تایپ (Type Annotation)
در واقع با اینکار به صورت دستی و صریح می توان نوع و زمینه کاری تایپ را مشخص کرد.
4- استنتاج تایپ (Type Inference)
فرآیند تلویحی تایپینگ (Implicit Typing) توسط خود زبان تایپ اسکریپت انجام می شود، بنابراین لازم نیست توسعه دهندگان تایپ هایی تهیه کنند که توسط کامپایلرها پیدا شوند.
البته زبان تایپ اسکریپت ویژگی های دیگری به جز مزیت تایپینگ دارد که در ادامه به آنها اشاره خواهیم کرد.
5- تعریف معانی دقیق در هنگام فرآیند تایپینگ
در ابتدای این مقاله توضیح دادیم که ویژگی های تایپینگ زبان TypeScript بسیار کاربردی هستند، اما این زبان قابلیت شناسایی ارورها را در زمان کامپایل کردن دارد. اگر چه در زبان جاوا اسکریپت شناسایی ارورها فقط در صورتی امکان پذیر است که اپلیکیشن نوشته شده بر اساس آن را مورد استفاده یا تست قرار دهیم.
به عبارت دیگر اگر برنامه نویسان یک ورودی غلط را به کدها اضافه کنند قبل از بارگذاری از وجود آنها آگاه خواهند شد. علاوه بر این اگر برنامه نویسان به هر دلیلی متوجه نقص در کدها نشوند، ابزارهای CI/CD بخصوصی مانند Jenkins توسعه دهندگان را از وجود Error ها آگاه خواهد کرد.
6- مدیریت بهتر کدها
شناسایی هر چه سریعتر ارورها تنها یکی از راه های مفید برای توسعه دهندگان اپلیکیشن محسوب می شود. نرم افزارهای مدرن تری مانند WebStorm کمک زیادی به مدیریت کدها می کند. حتی اگر کاربر یا کامپایلر قادر به شناسایی ارورها نباشند، ابزارهای ویرایشگر آن را پیدا می کنند و نیازی نیست که شما کار خاصی انجام دهید.
به علاوه فراهم آوری تایپ ها در واقع به مستند سازی کدها منجر می شود. اگر توسعه دهندگان مستندات هر چند کوتاهی هم از کدها در دست داشته باشند دیگر زمان خود را برای انجام اینکار هدر نمی دهند. به عبارت دیگر با استفاده از قابلیت Self-Documenting Code یک برنامه نویس کدهایی را می نویسد که بقیه افراد تیم نیز از ماهیت و کارکرد آن به راحتی آگاهی پیدا می کنند.
در برخی از مواقع با صرف نظر از چگونگی کارکرد کدها، توسعه دهندگان مایلند بدانند که چطور می شود از کدها استفاده کرد. به همین منظور تایپ های مفسر موجود در زبان TypeScript قادر به فهماندن این موضوع به توسعه دهندگان هستند. البته مزایای تایپ در این زبان بسیار فراتر از کدها می باشد به گونه ای که کتابخانه های خارجی نیز به راحتی با تایپ اسکریپت کار می کنند. قبل از ظهور TypeScript، برنامه نویسان مجبور بودند برای یادگیری مکان و چگونگی کارکرد توابع، زمان زیادی را در مستدات حجیم و طولانی صرف کنند. اما زبان برنامه نویسی تایپ اسکریپت تمامی این اطلاعات را در محیط خود به توسعه دهندگان ارائه می دهد.
7- افزایش راندمان تیم
یکی از ویژگی های خیلی خوب زبان تایپ اسکریپت این است که برنامه نویسان برای پیش بردن پروژه خیلی به هم وابسته نیستند. در حقیقت کار با زبان های دیگر نیازمند نیرویی است که پاسخگوی مشکلات اعضای تیم باشد. اگرچه معاشرت و همکاری تیمی یکی از نکات اساسی تیم های برنامه نویسی می باشد اما سرعت پروژه را به شدت کاهش می دهد. زبان TypeScript در واقع به صورت خودکار مشکلات برنامه نویسان را حل نمی کند اما با ارائه نکات کاربردی بسیار کمک کننده است. علاوه بر این به علت دارا بودن تایپ های مفسر (Type Annotation) می توان افراد جدید را به راحتی به پروژه در حال توسعه اضافه کرد.
8- محبوبیت و اعتماد بالا
زبان TypeScript یکی از محبوب ترین زبان های حال حاضر محسوب می شود، برای مثال در انبار داده های سایت GitHub به عنوان یکی از پرطرفدارترین زبان ها شناخته می شود. علاوه بر این طبق گزارشات StackOverFlow در سال 2019، تایپ اسکریپت در کنار زبان پایتون دوست داشتنی ترین زبان های حال حاضر جهان می باشد.
آمارهای تایپ اسکریپت در سایت گیت هاب
اگرچه این اعداد و ارقام نشان دهنده کیفیت یک زبان برنامه نویسی نیست، اما زبان تایپ اسکریپت توسط کمپانی های بزرگی نیز استفاده شده است. به عنوان مثال این زبان در محصولات نرم افزاری بسیاری مانند Slack، Asana و Visual Studio Code استفاده شده است. به علاوه زبان TypeScript در فریم ورک ها (انگولار، Ionic) و کتابخانه های (ZoomCharts، yWorks و GoJS) زبان جاوا اسکریپت نیز بر اساس این زبان نوشته شده اند.
کمپانی های بزرگتری مانند مایکروسافت، JetBrains، eBAY، Ericsson و UbiSoft نیز سابقه استفاده از زبان تایپ اسکریپت را در کارنامه خود دارند. در لینک زیر تمامی برندهایی که به این زبان اعتماد کرده اند را خواهید دید :
https://www.typescriptlang.org/community/friends.html
معایب زبان TypeScript
هیچ محصول فیزیکی یا دیجیتالی در این دنیا بی نقص نیست، بنابراین زبان TypeScript نیز ویزگی های منفی دارد که در ادامه به بررسی ان ها خواهیم پرداخت :
1- پیچیدگی بیش از حد سیستم تایپ (Typing System)
اگرچه مزیت های سیستم تایپ این زبان بسیار کاربردی است اما در پاره ای از مواقع بسیار گیج کننده و گُنگ است، در واقع این موضوع بخاطر این است که که این زبان به طور صد در صدی با جاوا اسکریپت در تعامل است.
2- نیاز به تلفیق (Compilation)
یکی دیگر از معایب زبان تایپ اسکریپت نیاز آن به فرآیند تلفیق است، البته بیشتر اپلیکیشن های جاوا اسکریپت مانند Gulp یا Webpack هم نیز نیازمند مراحل ساخت یا Build Steps هستند.
3- تعبیر غلط از امنیت
اگرچه قابلیت چک کردن تایپ ها در زبان TypeScript بسیار کاربردی و به صرفه است، اما در برخی اوقات سوء تعبیرهایی از این موضوع می شود. برای مثال از آنجایی که ارورها در این زبان به دقت شناسایی می شوند، توسعه دهندگان فکر می کنند کدهایی که در این زبان می نویسند 100% بدون خطا هستند، که در واقع این امر هیچگاه محقق نخواهد شد.
در حقیقت پروسه شناسایی ارورها در زمان کامپایلینگ انجام می شود و بعد از آن با محیطی روبرو هستیم که همانند جاوا اسکریپت درکی از وجود ارورها ندارد، بنابراین شاید دوباره با باگ ها مواجه شویم.
جمع بندی
زبان TypeScript یکی از ابزارهای فوق العاده برای برنامه نویسان جاوا اسکریپت می باشد. استفاده از این زبان برای پروژه های بزرگ مناسب بوده و باعث راحتی در فرآیند کدنویسی و توسعه اپلیکیشن های تحت وب می شود. به طور خلاصه استفاده از زبان تایپ اسکریپت باعث افزایش راندمان کار گروهی، کاهش باگ و ارور و بالا بردن کیفیت کدها می شود. در حقیقت اگر برای توسعه اپلیکیشن فرانت اند (Front-End) نیاز به ویژگی های ضروری زبان های بک اند (Back-End) دارید، زبان TypeScript بهترین گزینه برای شما محسوب می شود.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.