TypeScript

مایکروسافت در سال 2012، TypeScript را معرفی کرد.در سایت رسمی TypeScript گفت:
TypeScript یک نوع از قدرتمند ترین مجموعه ها است که جاوا اسکریپت را در هر مرورگری، هر هاستی، هر سیستم عاملی کامپایل می کند.
زبان TypeScript به عنوان superset زبان JavaScript ارائه شده‌است و هدف آن، strong typing و ارائه‌ی قابلیت‌های پیشرفته‌ی زبان‌های شیءگرا، جهت نوشتن برنامه‌های کلاینت و سرور، با کمترین میزان خطاها است. زبان TypeScript چندسکویی و سورس باز است و در نهایت به نگارشی از JavaScript کامپایل می‌شود که با تمام مرورگرهای فعلی سازگاری دارد و یا در سمت سرور بدون مشکلی توسط NodeJS قابل درک است.
زبان برنامه نویسی TypeScript ناشی از کاستی های جاوا اسکریپت برای توسعه برنامه های کاربردی در مقیاس بزرگ در مایکروسافت و در میان مشتریان خارجی است. توسعه دهندگان این زبان به دنبال راه حلی برای شکستن سازگاری با استاندارد و پشتیبانی متقابل پلت فرم آن نیستند. تایپ اسکریپت نیز بر اساس دانستن این که پیشنهاد استاندارد ECMAScript به پشتیبانی بعدی برای برنامه ریزی مبتنی بر کلاس متعهد است، فعالیت می کند.
TypeScriptهمه ویژگی های جاوا اسکریپت را دارد و ما می توانیم از آن در مرورگرها استفاده کنیم. و مهمترین و بهترین چیز برای آن استفاده شدن در فضای متن باز است. کامپایلر TypeScript خودش توسط TypeScript نوشته شده و در نهایت به جاوا اسکریپت تبدیل شده است.
چرا TypeScript؟
TypeScript کارها را سریع تر، راحت تر و سازماندهی تر می کند و شما می توانید با آن بصورت شئ گرا کد نویسی کنید مانند سی شارپ و جاوا و ... . ما می توانیم از کلاس، فضای نام، وراثت و .. استفاده کنیم. بنابراین این موضوع می تواند بسیار برای ما مفید باشد زمانی که می خواهیم بر روی پروژه های بزرگ و سنگین کار کنیم و بیشتر کارهای سمت کاربر یا همان UI را کنترل می کند.
TypeScript همه انواع خطا ها را در زمان اجرا چک می کند بنابراین نیازی نیست تا برای چک کردن کد در زمان اجرا منتظر بمانیم.
کد TypeScript همچنین از دیگر کتابخانه های جاوا اسکریپت پشتیبانی می کند.
ما می توانیم کد جاوا اسکریپت را در TypeScript نیز بنویسیم.
محبوب ترین فریم ورک هایی که از TypeScript استفاده می کنند می توان انگولار را نام برد.

نکاتی درمورد TypeScript
اگر یک متغیر را برای  TypeScript  تعریف کنیم همیشه این متغیر ثابت است، اگر بخواهی این متغیر را به صورت دیگر تعریف کنی به شما اخطار خواهد داد که این متغیر دارای شخصیت ثابت است و  نمی¬‌توان آن را تغییر داد.
اما جاوا اسکریپت مثل شخصی است که ثبات شخصیتی ندارد. یک متغیر می‌¬تواند دارای نقش¬‌های مختلفی باشد پس همچین انسانی حتی اگر به او یک ویژگی جدید را هم بدهیم، باز هم قبول خواهد کرد جدا از اینکه این ویژگی می-‌خواهد درست یا غلط باشد.
به این ویژگی تایپ اسکریپت اصطلاحا strongly type گفته و به این ویژگی جاوا اسکریپت loosely type می-‌گویند. تایپ اسکریپت خطای شما جلوگیری خواهد کرد و راه درست را به شما نشان خواهد داد اما در جاوا اسکریپت شما مختار هستید اشتباه کنید و در نهایت هم به دردسر بیفتید.
حتما در باکس اول گوگل تایپ کرده‌¬اید و مشاهده کرده‌¬اید که با تایپ چند حرف اول، به شما یک سری کلمات را نمایش خواهد داد که شما انتخاب کنید. حال به عکس بالا دقت کنید. این خاصیت دقیقا در تایپ اسکریپت هم است که به آن اصطلاحا Intellisense گفته می¬‌شود. درواقع زمانی که حروف ابتدایی یک کد را وارد می¬‌کنیم، یک لیست از کدهای مورد نظر به ما نشان می‌¬دهد که می¬‌توانیم کدنویسی را سریع انجام دهیم.
این زبان مجهز به حالت syntax است. سینتاکس مثل دوربین¬‌های پلیس در محیط کدنویسی ما است. حواسش به ما است که قوانین را رعایت کنیم و درست برنامه نویسی را انجام دهیم اما از نتیجه اخر خبری ندارد که شما سالم به مقصد می¬‌رسید یا خیر.
خاصیت وراثت یا Inhertance را هم می‌¬توان در تایپ اسکریپت یافت. وراثت به این مفهوم اشاره دارد که در کدنویسی ممکن است از یک کلاس، در بیان کلاس دیگر هم استفاده شود.
یک ویژگی مهم دیگری که می¬توان از آن یاد کرد، مفهوم interface است. به مثال زیر توجه کنید:
برای لاغر شدن هم باید ورزش کرد و هم باید اصول تغذیه صحیح را رعایت کرد.
در مثالی که عنوان کردیم، درواقع «لاغرشدن» یک کلاس برنامه نویسی است و هر کدام از مفاهیم ورزش و تغذیه در حکم یک interface هستند.
نکته مهم این است که ما هنگامی که از interface صحبت می¬‌کنیم، یک‌سری چارچوب یا قوانین را بیان می¬‌کنیم که به خودی خود عملکردی نیستند اما زمانی که از interface ها در یک کلاس استفاده می¬‌کنیم، درواقع به خود متعهد خواهیم شد که حتما این مفاهیم را در قالب آن کلاس مشخص، اجرایی کنیم.
superset زبان JavaScript بودن به این معنا است که تمام کدهای جاوا اسکریپتی موجود، به عنوان کد معتبر TypeScript نیز شناخته می‌شوند و همین مساله مهاجرت به آن‌را ساده‌تر می‌کند. زبان‌های دیگری مانند Dart و یا CoffeeScript ، نسبت به JavaScript بسیار متفاوت به نظر می‌رسند؛ اما Syntax زبان TypeScript شباهت بسیار زیادی به جاوا اسکریپت و خصوصا ES ۶ دارد. در اینجا تنها کافی است پسوند فایل‌های js را به ts تغییر دهید و از آن‌ها به عنوان کدهای معتبر TypeScript استفاده کنید.
بهترین قسمت TypeScript، کامپایل شدن آن به ES ۵ است به این عملیات Transpile هم می‌گویند. در زبان TypeScript به تمام امکانات پیشرفته‌ی ES ۶ مانند کلاس‌ها و ماژول‌ها دسترسی دارید، اما کد نهایی را که تولید می‌کند، می‌تواند ES ۵ ایی باشد که هم اکنون تمام مرورگرهای عمده آن‌را پشتیبانی می‌کنند. با تنظیمات کامپایلر TypeScript، امکان تولید کدهای ES ۳ تا ES ۵ و همچنین ES ۶ نیز وجود دارد. نمونه‌ی آنلاین این ترجمه را در TypeScript playground می‌توانید مشاهده کنید.
امکانات و کامپایلر این زبان، برای ویندوز، مک و لینوکس طراحی شده‌اند. واز آنجایی که سورس باز است. طراحان اصلی آن، همان طراحان زبان سی‌شارپ در مایکروسافت هستند و هم اکنون این زبان به صورت سورس باز توسط این شرکت توسعه داده شده و در GitHub نگهداری می‌شود.
زبان برنامه نویسی TypeScript از همان سینتکس و معنا شناسی شروع می شود که میلیون ها توسعه دهنده جاوا اسکریپت امروزه مورد استفاده قرار می دهند. در این زبان برنامه نویسی شما می توانید از کتابخانه های محبوب جاوا اسکریپتی نیز استفاده کنید. تایپ اسکریپت برای تمیز کردن و ساده سازی کد های جاوا اسکریپت که در هر مرورگر در Node.js اجرا می شوند، کامپایل می شود.
 این زبان به خوبی در Visual Studio پشتیبانی می‌شود و قابلیت Intellisense نوشتن برنامه به این زبان را دلپذیرتر خواهد کرد و از طرفی دیگر یکی از مهم‌ترین مزیت هایی که TypeScript در اختیار ما قرار می‌دهد این است که می‌توانیم به صورت Syntax آشنای شی گرایی کد نویسی کنیم و خیلی راحت‌تر کد‌های خود را سازمان دهی کرده و از نوشتن کد‌های تکراری اجتناب کنیم.