آیا باید به جای تایپاسکریپت از تریسر استفاده کنم تا به ES5 هدفگیری کنم اما برای ES6 آماده باشم


من روی یک پایگاه کد بزرگ کار میکنم که میتواند از تایپاسکریپت بهرهمند شود، اما از آنجا که در نهایت جهان به سمت ES6 حرکت خواهد کرد، آیا باید توسعه را به سمت Traceur هدایت کنم؟

من نمیخواهم پیادهسازیهای Typescript را تغییر دهم تا برای ES6 هدفگذاری کنم (وقتی آماده شد)، بنابراین حس من الآن این است که به استفاده از Traceur ادامه دهم.

آیا کسی میتواند راهنمایی کند؟

پاسخ شماره ۱

من قطعاً با این نظر که TypeScript و Traceur خیلی متفاوت هستند موافق نیستم، TypeScript نسخهای از ES5 با تایپها است و Traceur فقط به ES6 مربوط میشود.

از یک سو، یک نسخهی TypeScript 2.0 که با ES6 سازگار است در حال پیشرفت است. از سوی دیگر، چندین ویژگی در Traceur در مستندات بهعنوان تجربی علامتگذاری شدهاند، بهویژه انواع و توضیحات (annotations). معلوم میشود که انواع بسیار مشابه با انواع TypeScript هستند، در حالی که توضیحات چیزی است که به ES6 و TypeScript مربوط نیست. بنابراین، Traceur بیشتر شبیه فقط ES6 است و در واقع، یک نام موجود دارد: AtScript. بله، ما نیز یک توسعهی زبان دیگر داریم :-)

یک اسلاید جالب از ارائه میشکو هووری وجود دارد که نشان میدهد واقعاً چه اتفاقی در حال رخ دادن است، که به محض انتشار TypeScript 2.0 کاملاً معتبر است:

پس هرچه که تصمیم بگیرید استفاده کنید، مهم است که توجه داشته باشید: آنها زیرمجموعه هستند، ممکن است JS به سبک ES5/ES6 بنویسید و این کد TypeScript معتبر خواهد بود، ممکن است TypeScript بنویسید و این کد AtScript معتبر خواهد بود.

برمیگردم به سوال شما، من توصیهٔ فروتنانهای میکنم که با ES6 شروع کنید و از Traceur با ویژگیهای آزمایشی خاموش استفاده کنید (حالا نسبتاً پایدار است) و در صورت نیاز توسعه دهید، چون این تصمیم چندان رادیکال نیست، شما را محدود نمیکند و فضای حرکت در آینده را باقی میگذارد.

بهروزرسانی: در ابتدای سال ۲۰۱۵، من همچنین توصیه میکنم به پروژه 6to5 (که به Babel تغییر نام داده است) به عنوان جایگزینی برای Traceur توجه کنید. این پروژه بسیار سریع حرکت میکند و ویژگیهای خوبی ارائه میدهد، مانند خوانایی کد تولید شده و پشتیبانی بهتر از node.js و سیستمهای ساخت.

پاسخ شماره ۲

TypeScript و Traceur اهداف کاملاً متفاوتی دارند و نمیتوان آنها را به روشی که شما سعی در مقایسه آنها دارید، مقایسه کرد.

تایپاسکریپت یک ابرمجموعه از اکمااسکریپت است که تایپگذاری سختگیرانه را اضافه میکند. این زبان شامل برخی ویژگیهای ES6 است، اما هدف اصلی آن اضافه کردن تایپگذاری سختگیرانه به زبان (در حالی که با ES6 همراستا است) است، نه ارائه پشتیبانی از ES6.

در مقابل، Traceur یک کامپایلر از ایسیمااسکریپت آینده به ایسیمااسکریپت کنونی است. این چیزی به زبان اضافه نمیکند که قبلاً برای نسخه بعدی ایسیمااسکریپت پیشنهاد نشده باشد.

اگر فقط میخواهید امروز EcmaScript 6 بنویسید، از Traceur استفاده کنید. اگر میخواهید تایپینگ سخت اختیاری و تمام مزایایی که با آن همراه است، بهعلاوه برخی ویژگیهای ES6 را داشته باشید، از TypeScript استفاده کنید.