Loading blog posts...
Loading blog posts...
جاري التحميل...

صدر TypeScript 7.0 في 8 يوليو 2026، وهو ليس مجرد تحديث عادي. فقد أعادت مايكروسوفت كتابة المترجم (Compiler) بالكامل بلغة Go، لتنهي بذلك عقداً كاملاً كان فيه TypeScript يترجم نفسه بنفسه (Self-hosted). النتيجة؟ أصبحت عمليات البناء (Builds) أسرع بـ 7.7 إلى 11.9 مرة حسب حجم الكود لديك. لذلك، لم تعد المستودعات الضخمة تكتفي بالتحديث فقط، بل بدأت تعيد التفكير في هيكلة عمليات البناء بالكامل.
تروي الإحصائيات الرسمية من مايكروسوفت القصة أفضل من أي حملة تسويقية:
| المستودع (Repository) | قبل | بعد | نسبة التسريع |
|---|---|---|---|
| VS Code | 125.7s | 10.6s | 11.9x |
| Sentry | 139.8s | 15.7s | 8.9x |
| Bluesky | 24.3s | 2.8s | 8.7x |
| Playwright | 12.8s | 1.47s | 8.7x |
| tldraw | 11.2s | 1.46s | 7.7x |
هذه ليست مجرد اختبارات وهمية على مشاريع صغيرة. فقد انخفض وقت البناء في VS Code من أكثر من دقيقتين إلى أقل من 11 ثانية. هذا هو الفرق الحقيقي بين ترك مكتبك أثناء البناء، وبين البقاء في قمة تركيزك.
كذلك، انخفض استهلاك الذاكرة بنسبة تتراوح بين 6% و 26% في المستودعات التي تم اختبارها. على سبيل المثال، انخفض إجمالي الذاكرة المستخدمة لبناء VS Code من 5.2 جيجابايت إلى 4.2 جيجابايت. وإذا كانت خوادم CI لديك تعاني من محدودية الموارد، فإن هذه المساحة الإضافية قد تكون الفاصل بين عمليات بناء مستقرة وأخرى مليئة بالأخطاء.
لماذا هذا مهم: عندما يصبح فحص الأنواع (Type-checking) أسرع بـ 10 مرات تقريباً، تتغير الحسابات وراء هيكلة البناء. فالأساليب التي كانت "تستحق العناء" عندما كانت عملية الترجمة بطيئة، لم تعد تستحق كل هذا التعقيد الآن.
تأتي هذه القفزة في الأداء من ثلاثة تغييرات معمارية لم تكن ممكنة حقاً عندما كان مترجم TypeScript يعتمد على نفسه.
تنفيذ الكود الأصلي (Native code execution) يقلل الكثير من العبء الناتج عن بيئة تشغيل JavaScript. فمترجم Go يُنتج كود آلة مُحسّن يعمل مباشرة على المعالج (CPU)، متجاوزاً بذلك عمليات JIT في محرك V8 وتوقفات تنظيف الذاكرة (Garbage collection).
تعدد المسارات بذاكرة مشتركة (Shared-memory multithreading) يوفر توازياً حقيقياً. في الماضي، أجبرت طبيعة JavaScript (المعتمدة على مسار واحد) المترجم القديم على العمل بشكل تسلسلي. أما الآن، تسمح ميزات Go (مثل goroutines و channels) بتشغيل عدة عمليات فحص أنواع في نفس الوقت على هياكل بيانات مشتركة.
معمارية العمال المعزولين (Isolated worker architecture) تضمن الحصول على نتائج ثابتة. يحصل كل عامل فحص (Worker) على مساحة ذاكرة خاصة به، مما يعني التضحية ببعض العمل المكرر مقابل نتائج متسقة وقابلة للتكرار. هذه الموثوقية مهمة جداً في بيئات CI، حيث يمكن لعمليات البناء غير المتوقعة أن تحول اكتشاف الأخطاء إلى مضيعة حقيقية للوقت.
يتعمق إعلان النسخ التجريبية الأصلية في تفاصيل هذه التنازلات. النمط المتبع هنا هو إعطاء الأولوية للدقة على حساب أقصى توازي نظري ممكن - وهذا هو القرار الصحيح في معظم بيئات الإنتاج.
لماذا هذا مهم: هذا ليس مجرد تحسين بسيط في السرعة بفضل خوارزميات أفضل. بل هو تحول جذري في المنصة يزيل سقف القيود التي كانت تفرضها JavaScript على التزامن (Concurrency).
سرعة البناء هي ما يتصدر العناوين، لكن أداء المحرر هو ما تشعر به طوال يومك.
انخفض وقت فتح ملف يحتوي على خطأ في مستودع VS Code من 17.5 ثانية إلى أقل من 1.3 ثانية - أي تحسن بمقدار 13 ضعفاً. كما تراجع وقت تحميل المشروع من دقيقة تقريباً إلى حوالي 10 ثوانٍ.
Tip
إذا كان فريقك يشتكي من "بطء TypeScript" في VS Code، فإن عنق الزجاجة غالباً ما يكون فحص الأنواع في المشاريع الكبيرة. يعالج TypeScript 7.0 هذه المشكلة مباشرة دون الحاجة إلى تعديل الكود.
توثق دراسة حالة انتقال فريق VS Code كيف بدا هذا الأمر على أرض الواقع. فقد انخفض وقت فحص الأنواع للكود الأساسي من 36 ثانية إلى 5 ثوانٍ. وتراجع وقت بدء التشغيل في وضع المراقبة (Watch mode) من حوالي 80 ثانية إلى ما يزيد قليلاً عن 20 ثانية.
إذا كان مطوروك يعملون في مستودعات ضخمة (Monorepos) تحتوي على مئات الحزم، فإن هذا التحديث سيغير تجربتهم من "انتظار IntelliSense" إلى "الحصول على استجابة فورية".
لماذا هذا مهم: استجابة المحرر لها تأثير تراكمي. فظهور الأخطاء بسرعة وتحميل المشاريع في وقت أقل يغيران طريقة عمل المطورين، وليس فقط وقت البناء.
تتجه المستودعات الكبيرة نحو نمط واضح: استخدام TypeScript 7 لفحص الأنواع، وترك مهمة تجميع الكود (Bundling) للإنتاج لأدوات متخصصة مثل esbuild.
يوضح انتقال فريق VS Code هذا التوجه. فقد كانت بيئة العمل السابقة لديهم تدمج بين TypeScript 6 و webpack و esbuild في مسار معقد نوعاً ما. أما الآن، فهم يستخدمون TypeScript 7 مع خيار --noEmit للتحقق من الكود، ويستخدمون esbuild لإنتاج المخرجات النهائية.
json{ "scripts": { "typecheck": "tsc --noEmit", "build": "esbuild src/index.ts --bundle --outfile=dist/index.js", "ci": "npm run typecheck && npm run build" } }
يقوم أمر typecheck بتشغيل المترجم المبني بلغة Go لغرض التحقق فقط. فهو يكتشف أخطاء الأنواع دون إنتاج أي ملفات مخرجات. بينما يتولى أمر build عملية التجميع عبر esbuild، والذي يعمل أساساً بسرعة فائقة (Native speed). هذا الفصل في المهام يجعل كل أداة تركز على تخصصها: TypeScript يفحص الأنواع، و esbuild يتولى التحويل والتجميع.
ستحصل أيضاً على فوائد عملية. تظهر أخطاء الأنواع بشكل أسرع لأن المترجم لا يقوم بإنشاء الملفات (Emit) في نفس الوقت. وتصبح عملية التخزين المؤقت (Caching) أبسط لأن فحص الأنواع والتجميع يمكن إبطالهما بشكل مستقل. كما يمكن لخوادم CI تشغيل المرحلتين بالتوازي إذا كان ذلك مناسباً لبيئة عملك.
لماذا هذا مهم: عمليات البناء السريعة تأتي عادةً من ترك كل أداة تقوم بمهمة واحدة بإتقان. وسرعة TypeScript 7 تجعل هذا الفصل يبدو "مجانيًا" بدلاً من أن يضيف أي تأخير.
لا يعمل كل شيء بشكل مباشر منذ اليوم الأول. فقد تأجل دعم أدوات Vue و Svelte حتى إصدار TypeScript 7.1. والأدوات التي تعتمد على واجهة برمجة التطبيقات (API) القديمة قد تحتاج إلى طبقات توافق (Compatibility layers).
أوضح تحديث التقدم في ديسمبر 2025 هذه القيود. لذلك، فإن النهج الذي توصي به مايكروسوفت لعام 2026 هو التبني الهجين (Hybrid adoption).
json{ "devDependencies": { "typescript": "^7.0.0" } }
تقوم حزمة TypeScript 7 بإعادة تصدير (Re-export) واجهة برمجة التطبيقات الخاصة بإصدار 6.0. وبالتالي، يعمل أمر tsc على مترجم Go الجديد، بينما يمكن للأدوات مثل ts-morph أو المحولات المخصصة (Custom transformers) الاستمرار في استخدام واجهة الإصدار 6.0. تضيف طبقة إعادة التصدير هذه عبئاً بسيطاً جداً مع الحفاظ على عمل النظام البيئي بأكمله.
Warning
إذا كانت عملية البناء لديك تعتمد على محولات (Transformers) أو إضافات TypeScript مخصصة تتعامل مع واجهة المترجم مباشرة، اختبرها جيداً قبل التحديث. تغطي طبقة إعادة التصدير الحالات الشائعة، لكن الحالات النادرة (Edge cases) قد تحتاج إلى تحديثات.
يمكن للفرق التي تستخدم React أو Angular أو TypeScript النقي (Vanilla) التحديث فوراً في أغلب الأحيان. أما مشاريع Vue و Svelte، فمن الأفضل لها الانتظار حتى الإصدار 7.1، أو تشغيل أدوات بناء متوازية خلال فترة الانتقال.
لماذا هذا مهم: معرفة ما هو جاهز الآن وما لا يزال قيد التطوير يوفر عليك وقت الانتقال. ركز جهودك حيث يكون التوافق مستقراً بالفعل.

تقدم مدونة الانتقال التفصيلية لفريق VS Code نموذجاً عملياً للتبني على نطاق واسع. ركز نهجهم على تحقيق مكاسب تدريجية:
tsc أولاً.bash## Before: TypeScript 6 with complex watch setup tsc --watch --preserveWatchOutput  ## After: TypeScript 7 with same flags, 10x faster startup tsc --watch --preserveWatchOutput
الأمر البرمجي هو نفسه، لكن التجربة اليومية مختلفة تماماً. فانخفاض وقت بدء التشغيل في وضع المراقبة من 80 ثانية إلى 20 ثانية يعني أن المطورين سيتركون هذا الوضع يعمل باستمرار بدلاً من اللجوء إلى البناء اليدوي.
وفي المستودعات الضخمة (Monorepos) التي تستخدم مراجع المشاريع (Project references)، تتضاعف هذه المكاسب. حيث يمكن فحص أنواع كل مشروع مرجعي بالتوازي متى أمكن ذلك، وهذا الانخفاض في العبء لكل مشروع يتراكم بسرعة عبر عشرات الحزم.
لماذا هذا مهم: لا يتطلب الانتقال عادةً إعادة كتابة نصوص البناء (Build scripts). في كثير من الحالات، ستحصل على السرعة المطلوبة بمجرد تحديث الحزمة وإجراء بعض الفحوصات المحددة.
تصب نسب التسريع في صالح المشاريع البرمجية الكبيرة. انخفاض وقت البناء من ثانيتين إلى 0.3 ثانية أمر رائع. لكن انخفاضه من دقيقتين إلى 10 ثوانٍ يغير عادات العمل بالكامل.
تميل المستودعات الضخمة التي تحتوي على أكثر من 50 حزمة إلى رؤية التحسينات الأكبر. ففحص الأنواع عبر مراجع المشاريع يستفيد بشكل كبير من معمارية التوازي. كما يساعد تقليل استهلاك الذاكرة في منع أخطاء نفاد الذاكرة (OOM) على خوادم CI ذات الموارد المحدودة.
| حجم المستودع | بناء TS6 المعتاد | بناء TS7 المتوقع | التأثير |
|---|---|---|---|
| صغير (أقل من 10 آلاف سطر) | 2-5 ثوانٍ | 0.3-0.7 ثانية | طفيف |
| متوسط (10-100 ألف سطر) | 10-30 ثانية | 1.5-4 ثوانٍ | ملحوظ |
| كبير (أكثر من 100 ألف سطر) | 60-180 ثانية | 8-20 ثانية | جذري |
| مستودع ضخم (أكثر من 500 ألف سطر) | 3-10 دقائق | 20-60 ثانية | يغير مسار العمل |
بالنسبة للمشاريع الصغيرة، التحديث عادة ما يكون سهلاً ولكنه لن يُحدث فرقاً هائلاً. أما في المشاريع الكبيرة، ستحتاج إلى وقت أطول للاختبار، لكن المردود يستحق العناء.
Important
تظهر المكاسب الأكبر في عمليات البناء الكاملة (Full builds) من الصفر. أما عمليات البناء التدريجية (Incremental builds) فهي تستفيد بالفعل من التخزين المؤقت، لذا يكون التحسن النسبي أقل عادةً في سيناريوهات وضع المراقبة بعد التشغيل الأول.
لماذا هذا مهم: إذا كنت تحدد أولوياتك حول أين تستخدم TypeScript 7 أولاً، فابدأ بأكبر المستودعات وأبطئها. فهناك يتضاعف وقت المطورين الذي يتم توفيره بشكل حقيقي.
فحص الأنواع السريع له تأثيرات إيجابية متسلسلة على معمارية CI. بعض أنماط التوازي وُجدت أساساً للتحايل على بطء TypeScript. ومع TypeScript 7، أصبحت هذه الأنماط اختيارية وليست ضرورية.
تقوم بعض الفرق بتقسيم فحص الأنواع على عدة مهام CI لتقليل الوقت الإجمالي. لكن مع TypeScript 7، غالباً ما تنتهي مهمة واحدة بشكل أسرع من الوقت المستغرق في تنسيق وتوزيع العمل.
كذلك، يقل الضغط على الذاكرة. فهذا الانخفاض بنسبة 18-26% يعني أن الخوادم الأصغر يمكنها التعامل مع نفس أعباء العمل. وإذا كان فريقك يدفع مقابل كل دقيقة حوسبة في CI، فهذا سيتحول غالباً إلى توفير حقيقي في التكاليف.
yaml# GitHub Actions example - simpler pipeline possible jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '22' - run: npm ci - run: npm run typecheck # Now fast enough to run serially - run: npm run build - run: npm test
هنا، يعمل فحص الأنواع كخطوة تسلسلية عادية بدلاً من تقسيمه. هذه البساطة تقلل من جهد الصيانة وتجعل فهم أسباب الفشل أسهل. وبمجرد أن يصبح أمر typecheck خطوة تستغرق 10 ثوانٍ بدلاً من دقيقتين، فإن النهج التسلسلي هو الذي يتفوق غالباً.
لماذا هذا مهم: مسارات CI الأبسط أسهل في الصيانة واكتشاف الأخطاء. سرعة TypeScript 7 تعني الحاجة إلى حيل أقل لمجرد الحفاظ على استمرار عمليات البناء.
كتابة TypeScript بلغة TypeScript لم تكن مجرد تفصيل تقني - بل كانت رسالة قوية. والانتقال إلى Go يثير بطبيعة الحال تساؤلات حول مدى ملاءمة TypeScript للأدوات التي تتطلب أداءً عالياً.
القراءة العملية لهذا الأمر واضحة: لا يزال TypeScript ممتازاً لتطوير التطبيقات، بينما تطوير المترجمات له قيود مختلفة. لقد اختار الفريق الأداة الأفضل لبناء مترجم سريع ومتوازي.
تعتبر تغطية موقع The Register هذا الأمر أيضاً انتصاراً للغة Go كلغة مخصصة لأدوات المطورين. فسرعة البناء في Go، وأداء وقت التشغيل، ونموذج التزامن الخاص بها تتناسب تماماً مع هذه المشكلة.
بالنسبة لمستخدمي TypeScript، لغة التنفيذ هي في الغالب تفصيل داخلي. فمواصفات اللغة، ونظام الأنواع، وتجربة المطور لا تزال كما هي. كل ما في الأمر أن المترجم ينهي عمله في وقت أسرع.
لماذا هذا مهم: التغيير في الترجمة الذاتية مثير للاهتمام من الناحية الفلسفية، لكنه لن يؤثر على القرارات اليومية لمعظم الفرق. المكاسب في الأداء هي ما يهم حقاً من الناحية التشغيلية.
ابدأ من هنا (خطوتك الأولى)
نفّذ الأمر npm install typescript@latest في فرع اختباري (Test branch) وشغّل أوامر tsc الحالية لديك. قس الفرق في الوقت باستخدام time npm run typecheck.
مكاسب سريعة (تأثير فوري)
typecheck منفصل باستخدام --noEmit إذا لم يكن لديك واحد بالفعل.تعمق أكثر (لمن يريد المزيد)
يُعد TypeScript 7.0 أكبر قفزة في الأداء في تاريخ اللغة. فهذه السرعة التي تضاعفت من 7.7 إلى 11.9 مرة ليست مجرد تحسين تدريجي - بل هي تغيير جذري في المنصة يزيل اختناقات الأداء التي طالما عانينا منها.
إذا كان فريقك يدير قاعدة برمجية ضخمة بـ TypeScript، فإن عام 2026 هو الوقت المناسب لتبسيط معمارية البناء. فالحيل، وأساليب التوازي، وطبقات التخزين المؤقت الإضافية التي وُجدت أساساً لتعويض بطء فحص الأنواع، تستحق إعادة النظر. في العديد من بيئات العمل، يمكن التخلص من جزء كبير من هذا التعقيد.
يمنح نهج التبني الهجين - استخدام TypeScript 7 لفحص الأنواع، وطبقات التوافق لأدوات النظام البيئي - الفرق مساراً عملياً للمضي قدماً. ابدأ بأكبر المستودعات وأبطئها حيث يكون العائد على الاستثمار في أوضح صوره، ثم توسع تدريجياً مع وصول دعم أطر العمل في الإصدار 7.1.