يُعدّ TypeScript 7.0 أهمّ إصدار في تاريخ هذه اللغة — ليس بسبب صياغة جديدة، بل بسبب ما يجري تحت الغطاء. لقد أُعيدت كتابة المُحوِّل بالكامل بلغة Go، والنتيجة عمليات بناء أسرع بـ10 أضعاف، وفحص أنواع يكتمل في جزء ضئيل من الوقت، واستهلاك للذاكرة ينخفض بما يقارب 3 أضعاف.
إن كنت تعمل على أي قاعدة كود TypeScript ذات حجم معقول، فإن هذا التحديث سيُغيّر شعورك تجاه خط أنابيب CI — وسرعة استجابة محررك.
ما هو مشروع Corsa؟
Project Corsa هو الاسم الكودي الداخلي لمايكروسوفت للنسخة المبنية بلغة Go الأصيلة من مُحوِّل TypeScript. لم يكن الهدف تقديم ميزات لغوية جديدة، بل تجاوز الحاجز الجوهري في الأداء الذي فُرض بسبب تشغيل المُحوِّل كعملية Node.js.
كان المُحوِّل المبني على JavaScript مُصمَّماً للصحة والتنقلية، لكنه اصطدم بجدران صلبة: حلقة أحداث أحادية الخيط، وتوقفات لجمع المهملات في V8، وحدود ذاكرة جعلت المستودعات الكبيرة مؤلمة. تجميع مليون سطر كود في 89 ثانية كان مقبولاً عام 2018؛ بحلول عام 2026، يتوقع المطورون ردود فعل شبه فورية.
قيّمت مايكروسوفت Rust وC# وGo قبل اختيار Go. وكانت الأسباب عملية:
- البنية الوظيفية التكرارية لمُحوِّل TypeScript تتوافق بشكل طبيعي مع أسلوب Go
- يتعامل جامع المهملات في Go مع عبء العمل دون الحاجة لإدارة ذاكرة يدوية
- أثبت esbuild مسبقاً أن أدوات JavaScript المبنية بـGo يمكنها تحقيق تسريع كبير
- الترحيل المنهجي للكود (بدلاً من إعادة الكتابة من الصفر) يحافظ على الصحة
منطق فحص الأنواع في TypeScript 7 متطابق هيكلياً مع TypeScript 6 — تغيّرت بيئة التنفيذ فقط.
المعايير: الأرقام حقيقية
اختبرت مايكروسوفت المُحوِّل الجديد مقابل قواعد الكود الكبيرة مفتوحة المصدر:
| المشروع | tsc (TS 6) | tsgo (TS 7) | التسريع |
|---|---|---|---|
| VS Code (1.5 مليون سطر) | 89.1 ث | 8.74 ث | 10.2x |
| Sentry | 133.1 ث | 16.3 ث | 8.2x |
| TypeORM | 15.8 ث | 1.06 ث | 9.9x |
| Playwright | 9.3 ث | 1.24 ث | 7.5x |
ما هو أبعد من وقت التجميع:
- فحص الأنواع: أسرع بـ30 ضعفاً في المشاريع متوسطة الحجم وما فوق
- استخدام الذاكرة: أكفأ بـ2.9 مرة (من 68 ميجابايت إلى 24 ميجابايت)
- بدء تشغيل المحرر: تنخفض خدمة لغة VS Code من 9.6 ثانية إلى 1.2 ثانية
قواعد الكود الصغيرة (دون 50 ألف سطر) تشهد تسريعاً أكثر تواضعاً بحدود 2–5 أضعاف، إذ تُؤتي التوازية في Go ثمارها على نطاق أوسع. لكن حتى في مشروع بـ10,000 سطر، يلاحظ المطور انخفاضاً ملموساً في وقت البدء البارد.
التغييرات في البنية الداخلية
المُحوِّل الجديد (tsgo) يُجمَّع إلى ملف ثنائي أصيل لكل منصة — Windows وmacOS وLinux وARM — مما يعني عدم وجود إقلاع Node.js، ولا تكلفة JIT لـV8، ولا ضغط على كومة JavaScript.
تحلّ goroutines في Go محل حلقة الأحداث أحادية الخيط في JavaScript. يستخدم TypeScript 7 التوازية بالذاكرة المشتركة لفحص أنواع ملفات متعددة بشكل متزامن. الافتراضي هو 4 عمال للفحص، قابل للتهيئة عبر --checkers={count} للأجهزة ذات المزيد من النوى.
بالنسبة لإعدادات المستودع الأحادي — Yarn Workspaces وLerna وNx — هذا تحوّل جوهري. المشاريع التي كانت تنتظر بناء مراجع المشاريع بشكل تسلسلي يمكنها الآن تشغيل حزم متعددة بالتوازي دون أدوات تنسيق إضافية.
ما الذي يتغيّر في كودك
يتبنّى TypeScript 7 جميع التغييرات الكسرة لـTypeScript 6 كـأخطاء صارمة. إن كنت تنتقل من TypeScript 5 أو أقدم، فالقفزة كبيرة:
الوضع الصارم أصبح افتراضياً. سابقاً كنت بحاجة للاشتراك فيه؛ مع TS7 يكون الوضع الصارم مُفعّلاً ما لم تُعطّله صراحةً.
تمت إزالة هدف ES5. الحد الأدنى لهدف الإخراج هو ES2021. إن كان مشروعك يستهدف المتصفحات القديمة ويعتمد على "target": "es5", ستحتاج لخطوة تحويل منفصلة (esbuild أو Babel في مرحلة لاحقة).
تمت إزالة صيغتي AMD وUMD. كانتا مُهمَلتين لسنوات؛ TypeScript 7 يحذفهما تماماً.
دقة وحدة ES2015 لا تزال مدعومة، لكن node10 (دقة وحدة Node القديمة) أصبحت مُهمَلة لصالح node16 أو bundler.
اختبار tsgo اليوم
TypeScript 7 في مرحلة التجريب بدءاً من أبريل 2026، مع توقع إصدار GA في الربع الثاني من 2026. يمكنك تثبيت مُحوِّل المعاينة اليوم:
npm install -D @typescript/native-previewشغّله جانباً مع tsconfig.json الحالي:
npx tsgo -p . --extendedDiagnosticsملاحظة: tsgo لا يدعم --init بعد. استخدم tsc --init لإنشاء tsconfig، ثم انتقل إلى tsgo للتجميع وفحص الأنواع.
# فحص الإصدار السريع
npx tsgo -v
# فحص الأنواع فقط (بدون إصدار) — مفيد لـCI
npx tsgo -p . --noEmitلعمليات البناء الإنتاجية، استمر في استخدام TypeScript 6 حتى الإصدار الثابت GA. سير العمل الموصى به:
- شغّل
tsgo --noEmitفي CI للتحقق من الأنواع بسرعة 10 أضعاف - احتفظ بـ
tsc(TS6) لخطوة الإصدار حتى GA لـTS7
ما لم يكتمل بعد
كن على علم بهذه القيود الحالية قبل التبديل الكامل:
- إصدار JavaScript غير مكتمل. يتعامل مُحوِّل Go جيداً مع فحص الأنواع، لكن خط أنابيب توليد الكود لا يزال قيد الإنجاز.
- Decorators غير مدعومة بعد. المشاريع التي تستخدم
@Injectableأو@Componentأو أنماطاً مماثلة (NestJS وAngular) لا يمكنها الترحيل الكامل بعد. - ترحيل TSServer إلى LSP. ينتقل TypeScript 7 من بروتوكول TSServer المخصص إلى بروتوكول خادم اللغة (LSP). معظم المحررات ستتعامل مع هذا بشفافية، لكن تكاملات IDE المخصصة قد تحتاج لتحديثات.
مسار الترحيل
أنظف مسار للترقية هو المرحلي:
الخطوة 1 — الترقية إلى TypeScript 6 أولاً. TypeScript 6 (أصدر في 23 مارس 2026) هو إصدار جسري. يُفعّل تحذيرات الوضع الصارم، ويُعلّم على استخدام هدف ES5، ويحذّر من AMD/UMD. استخدمه لاكتشاف وإصلاح جميع التغييرات الكسرة قبل TS7.
الخطوة 2 — تثبيت المعاينة الأصيلة. أضف @typescript/native-preview كتبعية تطوير وشغّل tsgo --noEmit على قاعدة كودك للتحقق من عدم وجود تعارضات متبقية.
الخطوة 3 — ترحيل CI إلى tsgo لفحص الأنواع. استبدل خطوة tsc --noEmit في CI بـtsgo --noEmit. تنخفض أوقات البناء فوراً؛ الإصدار الإنتاجي لا يزال يستخدم TS6.
الخطوة 4 — انتظر GA للترحيل الكامل. بمجرد صدور TypeScript 7.0 الثابت (المتوقع الربع الثاني 2026)، حدّث سلسلة الأدوات بالكامل.
لقواعد الكود المؤسسية الكبيرة، خصّص 1–2 دورة سبرينت لمسار TypeScript 5 → 6 → 7. معظم العمل يكون في خطوة TS5 → TS6 (إصلاح الوضع الصارم وتغييرات دقة الوحدات).
هل حان وقت التبديل؟
لفحص الأنواع اليوم، نعم — ثبّت المعاينة وضع tsgo --noEmit في CI الخاص بك. تحسّن السرعة حقيقي وفوري، دون الحاجة لتغييرات في الكود لمعظم المشاريع.
للاستخدام الإنتاجي الكامل، انتظر إصدار GA. خط أنابيب إصدار JS ودعم Decorators هما العقبتان المتبقيتان لمعظم التطبيقات.
لا يُضيف TypeScript 7.0 صياغة جديدة أو ميزات لنظام الأنواع — بل يُسرّع تجربة المطوّر بأكملها. CI أسرع يعني تكراراً أسرع. فحص أنواع أسرع في المحرر يعني تبديلاً أقل للسياق. للفرق التي تعمل على قواعد كود TypeScript كبيرة، الترقية ليست اختيارية؛ إنها متأخرة.
إعادة كتابة Go تذكّرنا أن أفضل قرار هندسي أحياناً ليس ميزة جديدة — بل إعادة بناء الأساس بترتيب مختلف من حيث الحجم.