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 |
|---|---|---|
strict | false | true |
module | يتفاوت | "esnext" |
noUncheckedSideEffectImports | false | true |
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:
- افتح لوحة الامتدادات (Ctrl+Shift+X)
- ابحث عن "TypeScript Native Preview"
- ثبّت وأعد تشغيل 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.0 | TS 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%+ في فحص الأنواع، المخاطرة محدودة والعائد كبير.