TypeScript 6.0 از راه رسید
TypeScript 6.0 یک نقطه عطف بزرگ است. این آخرین نسخه ساخته شده بر پایه کدبیس JavaScript است. نسخه بعدی، یعنی 7.0، به یک کامپایلر مبتنی بر Go مهاجرت خواهد کرد.
این تغییر برای پروژه شما اهمیت دارد. اگر برای ارتقا خیلی معطل کنید، با دو مهاجرت پیاپی روبرو خواهید شد.
ویژگیهای جدیدی که باید از آنها استفاده کنید
• کلمه کلیدی using: این ویژگی منابعی مانند اتصالات پایگاه داده یا هندلهای فایل را مدیریت میکند. حافظه را بهطور خودکار پاکسازی میکند. دیگر نیازی به بلوکهای اضافی finally برای جلوگیری از نشت حافظه ندارید.
• استنتاج متد (method inference) بهتر: میتوانید نوشتن اعلانهای نوع (type annotations) صریح برای Fluent APIها را متوقف کنید. TypeScript اکنون زمینه (context) را برای شما مدیریت میکند.
• بهبودهای Variadic tuple: اکنون میتوانید انواع (types) را در هر موقعیتی از یک tuple پخش (spread) کنید. این کار نوشتن الگوهای پیچیده تابع را بسیار آسانتر میکند.
بهبودهای عملکردی
نسخه جدید سریعتر است. پروژههای بزرگ تا ۴۰٪ در بازسازی (rebuild) سریعتر عمل میکنند. کامپایلر اکنون از ردیابی وابستگی هوشمندتری استفاده میکند. این کامپایلر تنها زمانی بازکامپایل (recompile) میشود که یک امضا (signature) تغییر کند، نه صرفاً زمانی که بدنه تابع تغییر کند.
تغییرات ساختاری (Breaking Changes) که باید مراقب آنها باشید
• ادغام Namespace: هنگام ادغام namespaceها با کلاسها، باید از exportهای صریح استفاده کنید.
• امضاهای ایندکس (index signatures) سختگیرانهتر: دیگر نمیتوانید به ویژگیهای دلخواه در یک شیء دسترسی داشته باشید. این کار از باگهای ناشی از فرضِ وجود یک ویژگی (در حالی که وجود ندارد) جلوگیری میکند.
• پیشفرضهای حالت سختگیرانه (Strict mode): پرچم noUncheckedIndexedAccess اکنون بهصورت پیشفرض فعال است. شما باید بررسی کنید که آیا عناصر آرایه null یا undefined هستند یا خیر.
استراتژی مهاجرت
اگر با خطاهای زیادی روبرو شدید، نگران نباشید. این مراحل را دنبال کنید:
- ابتدا کامپایلر را با پرچم noEmit اجرا کنید تا تمام خطاها را ببینید.
- از codemodهای رسمی برای اصلاح خودکار امضاهای ایندکس و بررسیهای null استفاده کنید.
- مسائل مربوط به namespace را بهصورت دستی اصلاح کنید.
- node_modules خود را بررسی کنید. ممکن است برخی کتابخانهها هنوز از نسخه 6.0 پشتیبانی نکنند.
انتقال به کامپایلر Go در نسخه 7.0، بررسی نوع (type checking) را ۱۰ برابر سریعتر خواهد کرد. همین حالا مهاجرت به نسخه 6.0 را شروع کنید تا کدبیس خود را برای آینده آماده کنید.