فلسفهی بوجود آمدن زبان Typescript یکی از شنیدنیترینها در دنیای برنامهنویسی است. به یاد دارم روزهای اولی که با این زبان آشنا شدم (زمانی که حدوداً ورژن 0.6 منتشر شده بود)، افراد زیادی در مورد این زبان و اینکه آیا اصلاً به این زبان احتیاج داریم یا نه نظرات زیادی دادند. مثلاً Douglas Crockford در مورد این زبان بعد از تعریف و تمجیدهایی که از Anders Hejlsberg کرده گفته : I think that JavaScript's loose typing is one of its best features and that type checking is way overrated. TypeScript adds sweetness, but at a price. It is not a price I am willing to pay.
اما به مرور زمان این زبان توفیق بیشتری پیدا کرد تا اینکه امروز پروژههای بسیار جالبی با این زبان در حال توسعه هستند.
چرا باید در مورد Typescript بدانیم؟
زبان Typescript نقاط قوت بسیاری دارد، از جملهی آنها میتوان به موارد زیر اشاره کرد:
- این زبان یکی از مشکلات اصلی JavaScript را که نبودن Type Safety میباشد حل کردهاست. اگر چه زبانی که type safe نباشد بسیاری اوقات مزیت است! زبان typescript در حقیقت یک زبان gradual typing است.
- از آنجایی که typescript یک super set از زبان JavaScript است، برنامهنویس در لحظه از مزایای زبان JavaScript هم بهرهمند است. مهمتر از آن این است که در زبان typescript به اقیانوس کتابخانههای JavaScript دسترسی دارید. این امکان در بسیاری زبانهای دیگر جایگزین JavaScript وجود ندارد. حتی بهتر از آن، میتواند با این کتابخانهها بهصورت type safe برنامه بنویسید. تصور کنید که وقتی با $ در JQuery کار میکنید بتوانید از امکان intellisense استفاده کنید.
- بازهم از آنجا که typescript یک super set از JavaScript است، typescript قرار نیست به اسمبلی کامپایل شود؛ بلکه به زبان شناخته شدهای به نام JavaScript تبدیل میشود. بنابراین حتی میتوان از آن JavaScript نیز یاد گرفت.
- کار با زبان typescript برای کسانی که با java یا سی شارپ آشنا هستند، راحت است. امکاناتی مانند genericها نیز در typescript وجود دارد.
- نقشهی راه typescript با EcmaScript هماهنگ است. بنابراین از یادگرفتن این زبان ضرر نمیکنید چون قابلیتهای این زبان را به احتمال زیاد در نسخهی بعدی EcmaScript خواهید دید.
- این زبان توسط شرکت مایکروسافت پشتیبانی میشود، اوپن سورس است و تجربهی Anders Hejlsberg در زمینهی طراحی زبانهای برنامهنویسی پشتیبان آن!
- پروژههای جالبی که در ادامه به معرفی آنها میپردازیم، با این زبان در حال توسعه هستند.
در این مطلب تعدادی از این پروژهها را که برای خودم جذاب هستند، به شما معرفی میکنم.
AngularJS 2
طبیعتاً مهمترین اتفاقی که برای typescript در این روزهای اخیر افتاد این بود که تیم Angular اعلام کرد که نسخهی ۲ این فریمورک (که این روزها در حد JQuery در وب معروف شده و استفاده میشود) را با زبان Typescript توسعه میدهد و امکاناتی که قرار بود توسط زبان AtScript پیادهسازی شوند، به کمک Typescript توسعه پیدا میکنند. تیم Typescript هم بلافاصله اعلام کرد که در نسخهی 1.5 که بهزودی منتشر میشود بسیاری از امکانات AtScript قرار خواهد داشت. بنابراین میتوانید منتظر قابلیتی شبیه به Attributeهای سیشارپ در typescript 1.5 باشید.
همانطور که میدانید AngularJS مهمترین فریمورک حال حاضر است که برای توسعهی نرمافزارهای SPA وجود دارد. اعلام توسعهی Angular 2 بهوسیلهی Typescript مطمئناً خبر خوبی برای برنامهنویسان typescript خواهد بود، چون این اتفاق باعث بهبود سریعتر این زبان میشود.
Definitely Typed
اگرچه نمیتوان این پروژه را در سطح دیگر پروژههایی که در این مقاله معرفی میشود قرار داد، ولی اهمیت آن من را مجبور کرد که در این مقاله در موردش صحبت کنم. پروژهی
Definitely Typed در حقیقت استفاده از کتابخانههای دیگر JavaScript را در typescript ممکن میسازد. این پروژه برای پروژههای دیگری مانند JQuery، AngularJS، HighCharts، Underscore و هر چیزی که فکرش را بکنید Type Definition تعریف کرده. اگر هم کتابخانهای که شما میخواستید در این پروژه نبود، دلیلش این است که اضافه کردن آن را به شما واگذار کردهاند! Type Definitionها در Typescript یکی از قابلیتهای این زبان هستند برای اینکه بتوان با کتابخانههای JavaScript بهصورت Type safe کار کرد.
shumway
حتماً از شنیدن اینکه این پروژه قرار است چه کاری انجام دهد شوکه خواهید شد!
shumway که توسط موزیلا توسعه مییابد قرار است همان flash player باشد! البته این پروژه هنوز در مراحل اولیهی توسعه است ولی اگر بخواهید میتوانید دموی این پروژه را
اینجا ببینید.
Fayde
پروژهی
Fayde هم Silverlight را هدف گرفته است. البته مانند shumway موسسهی معروفی از آن حمایت نمیکند.
Doppio
پروژهی
Doppio در حقیقت یک Java Virtual Machine است که روی Browser هم میتواند اجرا شود. از جمله کارهای جالبی که با این پروژه میتوان کرد، کامپایل کردن کد جاوا، Disassemble کردن یک فایل class، اجرای یک فایل JAR و حتی ارتباط با JavaScript هستند.
TypeFramework
این پروژه برای افرادی خوب است که هم به NodeJS علاقمند هستند و هم به ASP.NET MVC. پروژهی TypeFramework در حقیقت پیادهسازی مدل ASP.NET MVC در NodeJS است. Controllerها، Actionها، ActionResultها و حتی ActionFilterها با همان تعریف موجود در ASP.NET MVC در این فریمورک وجود دارند.
MAYHEM
این پروژه یک فریمورک کاملی برای طراحی و توسعهی نرمافزارهای Enterprise است. در شرح این پروژه آمده است که بر خلاف اینکه همهی فریمورکها روی حجم فایل، سرعت و... تمرکز دارند این پروژه بر درستی معماری تأکید دارد. احتمالاً استفاده از این فریمورک برای پروژههای طولانی مدت و بزرگ مناسب است. اگرچه از طرف دیگر احتمالاً یاد گرفتن این فریمورک هم کار سختی خواهد بود.
حرف آخر
حرف آخر اینکه به نظر میرسد Typescript زبانی است که ارزش وقت گذاشتن دارد و اگر خواستید Typescript را یاد بگیرید نگاه کردن به کدهای این پروژهها حتماً کلاس درس پرباری خواهد بود. چه کسی میداند، شاید شما بخواهید در توسعهی یکی از این پروژهها مشارکت کنید!
نکتهی بعد از آخر هم اینکه اگر خواستید بهطور جدی با این زبان برنامهنویسی کنید نگاهی به
tslint و
typedoc هم بیاندازید.