تایپاسکریپت ۷ منتشر شد؛ نسخهی نیتیو با Go
خلاصهٔ کاملتر
تیم تایپاسکریپت رسماً از نسخهی ۷ رونمایی کرد و اسمش رو گذاشته «نسخهی نیتیو». به گفتهی تیم، این نسخه یه پورت کامل از کدبیس قبلیه که این بار بهجای خود تایپاسکریپت، با زبان Go نوشته شده. میگن سعی کردن ساختار و منطق کد اصلی رو دستنخورده نگه دارن تا نتیجهی هر دو کامپایلر یکی و سازگار بمونه، فقط اینبار با سرعت کد نیتیو و مالتیترد.
بزرگترین دستاورد این نسخه سرعته. رو بیلد کامل کدبیسهای واقعی، معمولاً بین ۸ تا ۱۲ برابر سریعتر میشه. مثلاً بیلد VS Code از حدود ۱۲۵ ثانیه رسیده به حدود ۱۰ ثانیه و Sentry از ۱۴۰ ثانیه به ۱۵ ثانیه. جالب اینه که با اینهمه سرعت، مصرف حافظه هم کمتر شده، تا حدود ۲۶ درصد رو بعضی پروژهها.
این سرعت فقط به خط فرمان محدود نیست. به گفتهی نویسنده، تجربهی ادیتور هم زیر و رو شده: باز کردن یه فایل با ارور تو کدبیس VS Code قبلاً حدود ۱۷.۵ ثانیه طول میکشید تا اولین ارور بیاد، ولی حالا زیر ۱.۳ ثانیهست. زیرساخت جدید رو پروتکل LSP سواره و میتونه از چند ترد برای جوابدادن همزمان به درخواستها استفاده کنه.
برای کنترل موازیسازی هم چندتا فلگ آزمایشی اضافه شده. تایپاسکریپت ۷ کارهایی مثل پارس، تایپچک و emit رو موازی انجام میده. با فلگ --checkers میتونی تعداد ورکرهای تایپچک رو تنظیم کنی (پیشفرض ۴)، با --builders تعداد پروژههایی که همزمان بیلد میشن رو، و با --singleThreaded کلاً موازیسازی رو خاموش کنی. بیشتر کردن ورکرها معمولاً سریعتره ولی حافظهی بیشتری میبره.
این نسخه پیشفرضهای تایپاسکریپت ۶.۰ رو هم میپذیره و خیلی از تنظیمات دپرکیتشده حالا ارور سخت میدن. مثلاً strict بهصورت پیشفرض روشنه، module رو esnextه و target: es5 دیگه پشتیبانی نمیشه. به گفتهی تیم، دوتا تغییری که ممکنه بیشتر غافلگیرت کنن rootDir و types هستن؛ پروژههایی که tsconfig بیرون پوشهی src دارن باید rootDir رو دستی ست کنن:
{
"compilerOptions": {
"rootDir": "./src"
},
"include": ["./src"]
}یه نکتهی مهم اینه که نسخهی ۷.۰ فعلاً API برنامهنویسی نداره؛ قراره تو ۷.۱ بیاد. تا اون موقع میشه تایپاسکریپت ۷ رو کنار ۶.۰ نصب کرد (با پکیج سازگاری @typescript/typescript6 که باینری tsc6 میده) تا ابزارهایی مثل typescript-eslint که به API نیاز دارن نشکنن. به همین دلیل، ورکفلوهایی مثل Vue، Svelte، Astro و تمپلیتهای Angular هم فعلاً باید رو ۶.۰ بمونن، چون به API پایدار وابستهن.
نکات کلیدی:
- تایپاسکریپت ۷ یه پورت نیتیو با زبان Go هست که رو کدبیسهای بزرگ بین ۸ تا ۱۲ برابر سریعتر بیلد میگیره
- مصرف حافظه هم کمتر شده و تجربهی ادیتور خیلی روونتر شده (اولین ارور زیر ۱.۳ ثانیه)
- فلگهای --checkers، --builders و --singleThreaded برای کنترل موازیسازی اضافه شدن
- پیشفرضها عوض شدن: strict روشن، module رو esnext و حذف target: es5
- نسخهی ۷.۰ فعلاً API نداره، پس Vue و Svelte و Angular باید رو ۶.۰ بمونن




