الكتابات/tutorial/2026/06
Tutorial19 يونيو 2026·20 دقيقة

TypeScript 7.0 (مشروع كورسا): بناء أسرع 10 مرات بمُترجم Go — دليل الهجرة 2026

TypeScript 7.0 (مشروع كورسا) يُعيد كتابة المُترجم بلغة Go لتحقيق أداء أسرع 10 مرات وتوفير 50% من الذاكرة. تعلّم كيفية هجرة مشروعك، وتحديث tsconfig.json، وإصلاح التغييرات الجوهرية في هذا الدليل الشامل لعام 2026.

TypeScript 7.0 — المعروف بـ مشروع كورسا — هو أهم تغيير هندسي في تاريخ TypeScript الممتد لثلاثة عشر عامًا. أُعيدت كتابة المُترجم بالكامل من TypeScript إلى لغة Go، مما يُوفّر أداءً مُقارِبًا للتشغيل الأصلي وتوازيًا حقيقيًا في الذاكرة المشتركة. والنتيجة هي مدقق أنواع أسرع بـ 10 مرات من TypeScript 6.0، مع توفير 50% من استخدام الذاكرة.

صدر الإصدار التجريبي في 21 أبريل 2026. من المتوقع صدور الإصدار المستقر خلال أشهر قليلة. يقودك هذا الدليل خطوة بخطوة خلال هجرة مشروعك.

المتطلبات الأساسية

قبل البدء، تأكد من توفر ما يلي:

  • Node.js 18 أو أحدث
  • مشروع TypeScript يعمل على الإصدار 5.x أو 6.x
  • إلمام بإعدادات tsconfig.json
  • npm أو pnpm أو yarn

ما هو مشروع كورسا؟

مُترجم TypeScript الحالي هو برنامج JavaScript أُحادي الخيط يعمل على Node.js. في المشاريع الكبيرة، يُشكّل هذا سقفًا صلبًا لسرعة فحص الأنواع، إذ أنت مقيّد بأداء V8 وحلقة الأحداث الأُحادية في JavaScript.

يكسر مشروع كورسا هذا السقف بطريقتين:

التنفيذ الأصلي: tsgo هو ملف ثنائي مُترجَم بلغة Go. بدلًا من تحميل حزمة JavaScript ضخمة في Node.js، يُنفَّذ المُترجم كرمز آلي أصلي مع وصول مباشر إلى المعالج.

التوازي بالذاكرة المشتركة: يسمح نموذج goroutine في Go لعدة عمال من مدققي الأنواع بالعمل على أجزاء مختلفة من قاعدة الكود في آنٍ واحد، مشاركين الذاكرة بدلًا من تسلسل الرسائل كما يفعل worker_threads في Node.js.

كان النقل منهجيًا وليس إعادة كتابة كاملة — منطق فحص الأنواع متطابق هيكليًا مع الأصل. التوافق يتجاوز 98%، مع 74 فارقًا معروفًا فقط عن TS 6.0. وقد تم التحقق منه على قواعد كود تضم ملايين الأسطر في شركات Bloomberg وFigma وGoogle وNotion وSlack وVercel.

لماذا تنتقل إلى TypeScript 7.0؟

  • فحص أنواع أسرع بـ 10 مرات — الفحص الذي يستغرق 60 ثانية يصبح حوالي 6 ثوانٍ
  • الفحص المتوازي عبر --checkers N (الافتراضي: 4 عمال)
  • تخفيض الذاكرة 50% عبر goroutines بذاكرة مشتركة
  • تكاليف CI أقل — دقائق بناء أقل لكل تشغيل pipeline
  • خادم لغوي أسرع — امتداد VS Code يستجيب بشكل ملحوظ أسرع
  • توافق 98%+ مع فحص أنواع TS 6.0

الخطوة 1: تثبيت TypeScript 7.0 التجريبي

خلال فترة الاختبار التجريبي، يُنشر TypeScript 7.0 تحت حزمة @typescript/native-preview:

npm install -D @typescript/native-preview@beta

أو مع pnpm:

pnpm add -D @typescript/native-preview@beta

تحقق من التثبيت:

npx tsgo --version
# Version 7.0.0-beta

الملف الثنائي tsgo هو بديل مُتوافق مع tsc ويقبل نفس الأعلام.

الخطوة 2: تشغيل أول فحص باستخدام tsgo

شغّل فحصًا كاملًا للأنواع دون الحاجة لأي تغييرات في الإعدادات:

npx tsgo --noEmit

لملف tsconfig مُحدد:

npx tsgo -p tsconfig.build.json --noEmit

مقارنة السرعة

قس كلا المُترجِمَين لرؤية الفرق في مشروعك:

time npx tsc --noEmit
time npx tsgo --noEmit

معظم مشاريع Next.js أو Node.js متوسطة الحجم تُشهد تسريعًا من 5 إلى 10 مرات فورًا.

الخطوة 3: مراجعة tsconfig.json

يُغيّر TypeScript 7.0 عدة قيم افتراضية ويزيل خيارات قديمة. راجع إعداداتك:

npx tsgo --noEmit 2>&1 | grep -iE "deprecated|removed|unsupported|no longer"

الافتراضيات المُغيَّرة

الخيارالقيمة الافتراضية في TS 6.0القيمة الافتراضية في TS 7.0
strictfalsetrue
moduleيتفاوت"esnext"
noUncheckedSideEffectImportsfalsetrue
stableTypeOrderingغير موجودtrue (لا يمكن تعطيله)
rootDirمُستنتَج"./"
typesكل @types/* تلقائيًا[] (صريح فقط)

أكثر التغييرات تأثيرًا هو types: []. إذا اعتمد مشروعك على تضمين @types/node تلقائيًا، يجب الآن تصريحه بشكل صريح:

{
  "compilerOptions": {
    "types": ["node", "jest", "react"]
  }
}

الخطوة 4: إصلاح التغييرات الجوهرية

يزيل TypeScript 7.0 عدة خيارات إعداد قديمة. إليك الأكثر شيوعًا:

إزالة target: "es5"

استهداف ES5 لم يعد مدعومًا — TypeScript 7.0 لا يتضمن مُولِّد JavaScript للإصدارات القديمة. فوّض مخرجات ES5 إلى حزمة التجميع (Vite أو Rolldown أو esbuild):

// قبل (TS 6.0)
{ "compilerOptions": { "target": "es5" } }
 
// بعد (TS 7.0)
{ "compilerOptions": { "target": "es2022" } }

استبدال baseUrl بـ paths

تم إزالة baseUrl. انتقل إلى paths مع مسارات نسبية صريحة:

// قبل
{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": { "@components/*": ["components/*"] }
  }
}
 
// بعد
{
  "compilerOptions": {
    "paths": { "@components/*": ["./src/components/*"] }
  }
}

تحديث moduleResolution

تم إزالة استراتيجيتي node وnode10. استخدم bundler لمعظم المشاريع الحديثة:

{
  "compilerOptions": {
    "moduleResolution": "bundler"
  }
}

إزالة downlevelIteration

هذا العلم لم يعد صالحًا — احذفه من إعداداتك بالكامل.

إزالة صيغ الوحدات القديمة

تم إزالة module: "amd" وmodule: "umd" وmodule: "system" وmodule: "none". انتقل إلى "esnext" أو "nodenext":

{
  "compilerOptions": {
    "module": "esnext"
  }
}

تعيين rootDir بشكل صريح

يُعيّن TypeScript 7.0 rootDir افتراضيًا إلى "./". إذا كانت مصادرك في مجلد فرعي، حدّده بشكل صريح:

{
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  },
  "include": ["./src"]
}

الخطوة 5: تفعيل فحص الأنواع المتوازي

الميزة الكبرى في TypeScript 7.0 هي الفحص المتوازي. يُولِّد افتراضيًا 4 goroutines عاملة (--checkers 4). اضبطها وفق بيئة الجهاز أو CI:

# 8 عمال في بيئة CI قوية
npx tsgo --noEmit --checkers 8
 
# الوضع أُحادي الخيط لتصحيح الأخطاء
npx tsgo --noEmit --singleThreaded

للـ monorepos التي تستخدم مراجع المشاريع، يتوازى البناء عبر --builders:

npx tsgo --build --builders 4

أضفه إلى خط أنابيب CI:

# .gitlab-ci.yml
typecheck:
  image: node:22
  script:
    - npm ci
    - npx tsgo --noEmit --checkers 4

أو في package.json:

{
  "scripts": {
    "typecheck": "tsgo --noEmit",
    "typecheck:ci": "tsgo --noEmit --checkers 8"
  }
}

الخطوة 6: تكامل VS Code

ثبّت امتداد VS Code الرسمي لخادم اللغة في TypeScript 7.0:

  1. افتح لوحة الامتدادات (Ctrl+Shift+X)
  2. ابحث عن "TypeScript Native Preview"
  3. ثبّت وأعد تشغيل VS Code

اضبط مساحة العمل لاستخدام النسخة المثبتة في المشروع:

// .vscode/settings.json
{
  "typescript.tsdk": "node_modules/@typescript/native-preview/lib",
  "typescript.enablePromptUseWorkspaceTsdk": true
}

ستلاحظ IntelliSense أسرع بشكل ملحوظ وتمييزًا فوريًا للأخطاء في الملفات الكبيرة.

الخطوة 7: تشغيل TypeScript 6 و7 جنبًا إلى جنب

خلال الهجرة، ثبّت TypeScript 6.0 بجانب 7.0 لمقارنة المخرجات:

npm install -D typescript@npm:@typescript/typescript6

شغّل كليهما للتحقق من عدم ظهور أخطاء جديدة:

# فحص TS 6
npx tsc --noEmit
 
# فحص TS 7
npx tsgo --noEmit

إذا أبلغ TypeScript 7.0 عن أخطاء لم يُبلّغ عنها TS 6.0، فهي أخطاء أنواع حقيقية كشفتها الافتراضيات الأكثر صرامة. أصلحها بدلًا من إخمادها.

اختبار الهجرة

بعد إكمال تحديثات tsconfig، شغّل تحققًا كاملًا:

# فحص كامل للأنواع
npx tsgo --noEmit
 
# البناء (إذا كنت تستخدم tsc للإصدار)
npx tsgo -p tsconfig.build.json
 
# إعادة بناء كاملة لمراجع المشاريع
npx tsgo --build --force

معايير الأداء

بيانات أداء حقيقية من قواعد كود إنتاجية:

حجم المشروعTS 6.0TS 7.0التسريع
صغير (أقل من 100 ملف)3.1 ث0.4 ث7.8x
متوسط (500–1000 ملف)28 ث2.9 ث9.7x
كبير (أكثر من 5000 ملف)3 د 40 ث22 ث10x
Monorepo (أكثر من 10 حزم)أكثر من 8 دأقل من 50 ثأكثر من 10x

عادةً تنخفض الذاكرة من حوالي 1.2 GB إلى أقل من 600 MB للمشاريع التي تضم 1000 ملف.

استكشاف الأخطاء

"Option 'baseUrl' is no longer supported" — انتقل إلى paths بمسارات نسبية (الخطوة 4).

"Option 'target' value 'es5' is not valid" — عيّن target إلى "es2022" أو أحدث.

"Option 'types' default changed" — أضف "types": ["node"] (أو حزم @types المطلوبة) إلى compilerOptions.

TypeScript 7.0 يُبلّغ عن أخطاء جديدة — هذه أخطاء أنواع حقيقية. الأسباب الأكثر شيوعًا: strict: true يُفعّل strictNullChecks وnoImplicitAny، وnoUncheckedSideEffectImports: true. أصلحها بإضافة تعليقات توضيحية للأنواع المناسبة.

VS Code لا يزال يُظهر إصدار TypeScript القديم — اضغط Cmd+Shift+P ← "TypeScript: Select TypeScript Version" ← "Use Workspace Version".

الخطوات التالية

  • تابع الإصدار المستقر — من المتوقع صدور TypeScript 7.0 المستقر خلال شهرين من الإصدار التجريبي في أبريل 2026.
  • اجمعه مع Vite 8 وRolldown — دمج فحص أنواع TypeScript 7.0 الأصلي بالـ Go مع تجميع Rolldown الأصلي بالـ Rust لخط بناء أصلي بالكامل.
  • استكشف مراجع المشاريع — علم --builders يجعل إعادة بناء الـ monorepos الكبيرة أسرع بشكل كبير.
  • أبلّغ عن الحالات الطرفية — أرسل الفوارق في فحص الأنواع إلى مستودع TypeScript على GitHub.

الخلاصة

TypeScript 7.0 (مشروع كورسا) هو تحوّل جذري وليس إصدارًا تراكميًا. إعادة الكتابة بلغة Go تُقدّم سرعات التنفيذ الأصلية والتوازي الحقيقي متعدد الخيوط الذي لا يستطيع أي وقت تشغيل JavaScript مجاراته. لفرق التطوير التي تُشغّل TypeScript في خطوط أنابيب CI/CD، يُترجَم التحسن 10x في السرعة مباشرةً إلى دورات تغذية راجعة أقصر وتكاليف حوسبة سحابية أقل.

مسار الهجرة واضح: ثبّت @typescript/native-preview@beta، شغّل npx tsgo --noEmit، أصلح تغييرات الإعداد الجوهرية القليلة، واستمتع بفحص أنواع أسرع بكثير. مع توافق 98%+ في فحص الأنواع، المخاطرة محدودة والعائد كبير.