نگاهی به TypeScript
گروه: TypeScript
تاریخ ثبت: ۹۲/۴/۳۱
نویسنده: ابوالفضل حسن الدين



جاوا اسکریپت، زبانی که در 1995 ابداع شد و در طول این سال‌ها به عنوان معروف‌ترین زبان سمت کلاینت در تمامی مرورگرها مورد استفاده قرار گرفت. امروزه کمتر صفحه‌ای در بستر وب می‌توان یافت که اثری از جاوا اسکریپت در آن دیده نشود. با پررنگ‌تر شدن برنامه‌نویسی سمت کلاینت، ظهور کتابخانه‌های کاربردی و پیچیده‌تر شدن نیازهای روزمره این حوزه، اهمیت جاوا اسکریپت هر روز بیشتر از قبل می‌شود.

نکته جالب اینکه جاوا اسکریپت امروزه فقط زبان برنامه‌نویسی سمت کلاینت و مختص مرورگرها محسوب نمی‌شود! پلتفرمی (فریم‌ورکی) مانند node.js (سایت فارسی) باعث شده است که امکان برنامه‌نویسی سمت سرور نیز با جاوا اسکریپت فراهم شود.

اگر اخبار مربوط به رتبه‌بندی و محبوبیت زبان‌های برنامه‌نویسی را دنبال می‌کنید، شاید از شنیدن این خبر تعجب کنید که جاوا اسکریپت در حال افزایش محبوبیت خود بوده و توانسته است مجددا در بین ده زبان برتر جایی برای خود باز کند.

اما با تمامی این توصیف‌ها باید گفت که جاوا اسکریپت زبان مناسبی برای مقیاس‌های کلان به حساب نمی‌آید. دلیل آن هم عدم تطابق آن  - به دلیل ماهیت وجودی‌اش - با نیازهای مدرن برنامه‌نویسی روز مانند مفهوم شیءگرایی، وراثت، عام‌گرایی و بسیاری موارد دیگر است. محدودیت‌های موجود در جاوا اسکریپت و ابزارهای کار با آن، فرآیند توسعه، تست و نگهداشت اپلیکیشن‌هایی در مقیاس‌های تجاری و سازمانی را به امری طاقت‌فرسا و دشوار تبدیل کرده است.


راه حل مایکروسافت برای برطرف کردن محدودیت‌های جاوا اسکریپت

ماهیت انکارناپذیر جاوا اسکریپت و افزایش روزافزون کاربری آن موجب شد که غول نرم‌افزاری به دنبال ارائه راه‌حلی برای رفع محدودیت‌های موجود در استفاده از جاوا اسکریپت در مقیاس‌های کلان برآید. برای این منظور مایکروسافت توسعه زبان سطح بالاتری از جاوا اسکریپت را در دستور کار خود قرار داد. زبانی که ساختار نزدیک به زبان‌های برنامه‌نویسی مدرن مانند سی‌شارپ و ویژوال بیسیک داشته باشد، اما پس از کامپایل شدن مجددا خروجی جاوا اسکریپت سازگار با تمامی محیط‌ها و مرورگرها را تولید کند. این زبان که توسعه آن چند ماهی‌ست به سرپرستی معمار بزرگ هلسبرگ آغاز شده است، TypeScript نام گرفته است.


TypeScript

اگر به صفحه اصلی این زبان جدید مراجعه کنید، توصیف زیر را برای آن خواهید یافت:

TypeScript is a language for application-scale JavaScript development.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.

این جملات خلاصه مطالبی‌ست که تاکنون در این مقاله بیان شده‌اند. اینکه TypeScript زبانی برای توسعه در مقیاس اپلیکیشن با جاوا اسکریپت است. یک زبان سطح بالاتر با پشتیبانی صحیح از شیءگرایی‌ست که به خروجی جاوا اسکریپت کامپایل می‌شود. می‌تواند در هر مرورگر، میزبان و سیستم‌عاملی به اجرا درآید. تنها نکته‌ای که تاکنون هیچ اشاره‌ای به آن نشده است، کدباز بودن پروژه توسعه زبان TypeScript می‌باشد.


جاوا اسکریپت یک زبان عمومی‌ست و نمی‌توان آن را به شرکت خاصی نسبت داد. توجه به این نکته که مایکروسافت توان و منابع زیادی برای بهبود جاوا اسکریپت تحت پروژه‌ای کدباز اختصاص داده است، بسیار حائز اهمیت می‌باشد. این اقدام باعث شده است هم‌اکنون که زبان در فاز توسعه به سر می‌برد، گروه‌ها و انجمن‌های بسیاری از آن پشتیبانی کنند.



یکی دیگر از جنبه‌های مثبت و مفید توسعه TypeScript آن است که می‌توان تمام توان ابزاری محصول قدرتمندی چون ویژوال استودیو را هنگام برنامه‌نویسی و توسعه برنامه‌ها با این زبان به کار گرفت.


نگاهی به ساختار TypeScript

از آنجایی که آندرس هلسبرگ - معمار و طراح زبان سی‌شارپ - سرپرستی تیم توسعه TypeScript را به عهده دارد، طبیعی‌ست که ساختار این زبان به ساختار زبان‌های دات‌نت بخصوص سی‌شارپ بسیار نزدیک باشد. هلسبرگ در ارائه‌های خود نیز به این نکته اشاره کرده است که TypeScript در حال تبادل ایده با زبان‌های دات‌نت است. تصویر زیر ساختار برنامه‌های TypeScript را نمایش می‌دهد.



در یک برنامه، می‌توان از تمامی ساختارهای موجود استفاده کرد. ماژول‌ها در TypeScript مشابه فضای‌نام (namespace) در زبان سی‌شارپ می‌باشند. تعاریف function، class، interface و variable هم دقیقا معادل ساختارهای مشابه خود در سی‌شارپ هستند. متغیرها می‌توانند با سطح دسترسی عمومی یا خصوصی تعریف شوند. در TypeScript مانند سی‌شارپ یک کلاس می‌تواند از کلاس دیگر یا چندین واسط مشتق شود. کد زیر نحوه پیاده‌سازی ارث‌بری در TypeScript را نشان می‌دهد:

class Animal {
    constructor(public name: string) { }
    move(meters: number) {
        alert(this.name + " moved " + meters + "m.");
    }
}
 
class Snake extends Animal {
    constructor(name: string) { super(name); }
    move() {
        alert("Slithering...");
        super.move(5);
    }
}
 
class Horse extends Animal {
    constructor(name: string) { super(name); }
    move() {
        alert("Galloping...");
        super.move(45);
    }
}
 
var sam = new Snake("Sammy the Python");
var tom: Animal = new Horse("Tommy the Palomino");

استفاده از این زبان برای توسعه‌دهندگان دات‌نت بخصوص توسعه‌دهندگان وب و آشنا به جاوا اسکریپت بسیار ساده خواهد بود. چرا که نحو آن ترکیبی از نحو جاوا اسکریپت و زبان سی‌شارپ می‌باشد. همانطور که در تعریف هم اشاره شد کدهای TypeScript پس از کامپایل به خروجی جاوا اسکریپ تبدیل می‌شوند. تصویر زیر چرخه حیات TypeScript را مشخص کرده است.




آخرین نگارش TypeScript

چندی پیش همزمان با کنفرانس Build 2013، هلسبرگ آخرین نسخه از TypeScript را با ورژن 0.9 ارائه کرد. در این ارائه هلسبرگ بیان کرد که چند ماهی‌ست (از سال 2012) کار توسعه TypeScript آغاز شده است و انتظار می‌رود انتهای امسال نسخه 1.0 این زبان آماده شود. برای کسب اطلاعات بیشتر می‌توانید نقشه راه TypeScript را مشاهده کنید.

در نسخه 0.9 ویژگی‌های جالب و مفید بسیاری به TypeScript اضافه شده اند که در تکامل آن به عنوان یک زبان سودمند نقش مهمی را ایفا خواهند کرد. مهم‌ترین آن‌ها پشتیبانی از برنامه‌نویسی عام‌گرا (generics) می‌باشد. به این ترتیب می‌توان انواعی عام به شکل زیر در TypeScript تعریف کرد:

interface Array<T> {
        // ...
        map<U>(callbackfn: (value: T, index: number, array: T[]) => U): U[];
        // ...
    }
 
var array: Array<
string> = ["John", "Sam", "George"];
 
var lengths = array.map((val, idx, arr) => val.length);

انواع شمارشی (enum) هم به این نسخه اضافه شده‌اند:

enum Color { red, blue, green }
 
var myColor = Color.red;
console.log(Color[myColor]);

برای مشاهده موارد جدید در نسخه 0.9 می‌توانید مطالب 1 و 2 را مطالعه کنید.


TypeScript در عمل

TypeScript به راحتی در ویژوال استودیو قابل استفاده می‌باشد. همچنین در سایت اصلی آن بخشی برای کار عملی به شکل زیر طراحی شده است:



شما می‌توانید با انتخاب هر مثال، کد TypeScript در سمت چپ و خروجی جاوا اسکریپت حاصل را در سمت راست مشاهده کنید. همچنین با کلیک بر روی دکمه Run امکان اجرای کد جاوا اسکریپت و مشاهده نتیجه نهایی فراهم شده است!


جمع‌بندی

در این مقاله سعی شده است TypeScript به عنوان پروژه جدید مایکروسافت در حوزه زبان‌های برنامه‌نویسی به صورت اجمالی معرفی گردد. توجه داشته باشید که هدف این مقاله آموزش این زبان نبوده است. در صورتی که قصد یادگیری این زبان را داشته باشید می‌توانید از منابع سایت اصلی آن بهره‌مند شوید. برای دریافت آخرین اخبار می‌توانید وبلاگ اصلی TypeScript را دنبال کنید. سؤالات مرتبط هم در سایت stackoverflow مطرح می‌شوند. مطالعه این مطلب نیز مکمل خوبی برای این مقاله خواهد بود. در ضمن کتاب رایگان TypeScript Succinctly Syncfusion ضمیمه این مقاله می‌باشد.

در انتها یک سوال مهم و کلیدی مطرح می‌شود و آن اینکه "به نظر شما آیا توسعه TypeScript مفید خواهد بود یا به جای سرمایه‌گذاری بر روی جاوا اسکریپت بهتر می‌بود زبانی کاملا جدید و مدرن در این حوزه توسعه می‌یافت؟". با مراجعه به اکثر اخبار و ارائه‌های مربوط به TypeScript بحث و گفتمان در رابطه با این سوال بین کاربران مختلف ادامه دارد. در صورت تمایل! نظر خود را در بخش پیام‌ها منعکس کنید.

امید است که این مقاله مورد توجه خوانندگان محترم و همراه وب‌سایت قرار گرفته باشد. شما می‌توانید نکته نظرات و پیشنهادات خود را در بخش پیام‌ها با ما در میان بگذارید. آخرین مطالب و اخبار دات‌نت را در صفــ ـحه مؤلف دنبال کنید.


Copyright © 2006 - 2011 All Rights Reserved.
Please direct your questions or comments to