---
title: "TypeScript 7.1 Beta: فحص أنواع أسرع لحد 1.9 مرة، وهل بتجرّبه هلق؟"
description: "حسب أرقام Microsoft، TypeScript 7.1 Beta بيخلص فحص الأنواع أسرع من 7.0 بين 1.2 و1.9 مرة وبذاكرة أقل. جرّبه هلق على فرع لحاله، لأنو فيه تغيير ممكن يكسر البناء."
url: https://ihsanalapsi.dev/articles/typescript-7-1-beta
lang: ar
date: 2026-10-21
updated: 2026-10-21
tags: ["برمجة", "TypeScript", "أدوات المطورين"]
author: Ihsan Alapsi (إحسان العبسي)
---
# TypeScript 7.1 Beta: فحص أنواع أسرع لحد 1.9 مرة، وهل بتجرّبه هلق؟

فريق &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; بـ &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; نزّل نسخة &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; بـ 20 تشرين الأول 2026، بعد &lt;span dir="ltr"&gt;7.0&lt;/span&gt; يلي نزلت بـ 8 تموز. إذا فحص الأنواع عندك بالـ &lt;span dir="ltr"&gt;CI&lt;/span&gt; بطيء أو بيوقع من الذاكرة، هالنسخة بتعنيك. قبل ما ترقّي، في فحص أشد للأنواع ممكن يوقّف البناء، والتسريع بيختلف من مشروع لمشروع، فلازم تقيسه عندك.

## قديش &lt;span dir="ltr"&gt;TypeScript 7.1 Beta&lt;/span&gt; أسرع من 7.0؟

حسب قياسات &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; على خمس مشاريع، &lt;span dir="ltr"&gt;TypeScript 7.1 Beta&lt;/span&gt; بيخلص فحص الأنواع أسرع من 7.0 بين 1.2 و1.9 مرة، وبيستهلك ذاكرة أقل بين 15.8% و49.6%. القياس بـ 4 &lt;span dir="ltr"&gt;threads&lt;/span&gt; لفحص الأنواع، وهو الإعداد الافتراضي، ومع `--noEmit`.

الأرقام متل ما نشرها الفريق بـ [إعلان البيتا](https://devblogs.microsoft.com/typescript/announcing-typescript-7-1-beta/)، من &lt;span dir="ltr"&gt;7.0&lt;/span&gt; لـ &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt;:


| المشروع                                          | الوقت بـ 7.0 | الوقت بـ &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; | التسريع | نقص الوقت |
| ------------------------------------------------ | ------------ | ---------------------------------------------------- | ------- | --------- |
| &lt;span dir="ltr"&gt;bluesky&lt;/span&gt;       | 4.48 ثانية   | 3.89 ثانية                                           | 1.2 مرة | 13.2%     |
| &lt;span dir="ltr"&gt;mui-docs&lt;/span&gt;      | 22.2 ثانية   | 11.9 ثانية                                           | 1.9 مرة | 46.6%     |
| &lt;span dir="ltr"&gt;sentry&lt;/span&gt;        | 19.6 ثانية   | 15.1 ثانية                                           | 1.3 مرة | 22.8%     |
| &lt;span dir="ltr"&gt;t3code-server&lt;/span&gt; | 26.5 ثانية   | 19.1 ثانية                                           | 1.4 مرة | 28.2%     |
| &lt;span dir="ltr"&gt;vscode&lt;/span&gt;        | 21.6 ثانية   | 17.7 ثانية                                           | 1.2 مرة | 17.7%     |


وهيك الذاكرة بنفس القياس:


| المشروع                                          | الذاكرة بـ 7.0 (&lt;span dir="ltr"&gt;MiB&lt;/span&gt;) | الذاكرة بـ &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; (&lt;span dir="ltr"&gt;MiB&lt;/span&gt;) | النقص |
| ------------------------------------------------ | ------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----- |
| &lt;span dir="ltr"&gt;bluesky&lt;/span&gt;       | 2,017                                                   | 1,698                                                                                           | 15.8% |
| &lt;span dir="ltr"&gt;mui-docs&lt;/span&gt;      | 8,093                                                   | 4,079                                                                                           | 49.6% |
| &lt;span dir="ltr"&gt;sentry&lt;/span&gt;        | 6,587                                                   | 5,216                                                                                           | 20.8% |
| &lt;span dir="ltr"&gt;t3code-server&lt;/span&gt; | 6,894                                                   | 5,197                                                                                           | 24.6% |
| &lt;span dir="ltr"&gt;vscode&lt;/span&gt;        | 8,387                                                   | 6,943                                                                                           | 17.2% |


هي أرقامهن هني، على هالمشاريع بالذات، والإعلان ما بيذكر مواصفات الجهاز يلي قاسوا عليه. ورا الفرق قائمة طويلة من التحسينات بالمترجم (49 بند بالإعلان)، هدفها تخفّف الذاكرة وتسرّع البناء. مشروعك ممكن يطلع فرقه أصغر أو أكبر، فالرقم يلي بيهمك هو يلي بتقيسه إنت (آخر قسم).

## شو التغيير يلي ممكن يكسر البناء عندك؟

أهم تغيير لازم تجرّبه هلق هو فحص أشد للـ &lt;span dir="ltr"&gt;distributive conditional types&lt;/span&gt;. كود كان بيمرق على 7.0 ممكن يطلع فيه خطأ &lt;span dir="ltr"&gt;TS2344&lt;/span&gt; على 7.1، وهاد يلي بيوقّف البناء بالـ &lt;span dir="ltr"&gt;CI&lt;/span&gt;.

الـ &lt;span dir="ltr"&gt;conditional type&lt;/span&gt; هو نوع بيختار بين نوعين حسب شرط، متل `T extends X ? A : B`. وإذا `T` طلع &lt;span dir="ltr"&gt;union&lt;/span&gt;، المترجم بيفرطه وبيطبّق الشرط على كل عضو لحاله، وهاد اسمه &lt;span dir="ltr"&gt;distributive conditional type&lt;/span&gt;.

المشكلة إنو جوّا كل فرع، `T` صار قطعة من الـ &lt;span dir="ltr"&gt;union&lt;/span&gt; مش الـ &lt;span dir="ltr"&gt;union&lt;/span&gt; كله، والنسخ القديمة كانت تعامله كأنه `T` الأصلي. فقيد متل `B extends A` كان يمرق وهو مش صحيح لكل قطعة. هاد المثال من إعلان &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt;:

```typescript
type Show<A extends number, B extends A> = `${B} extends ${A}`;

type Issue<A extends number, B extends A> =
  A extends B ?
    never :
    Show<A, B>;

// TypeScript 7.0: no error, UhOh becomes "0 extends 1"
type UhOh = Issue<0 | 1, 0>;
```

بـ `Issue<0 | 1, 0>` الشرط بيتفرط على 0 و1. لما `A` بتصير 1 و`B` بتضل 0، القيد `B extends A` بيصير `0 extends 1`، وهاد غلط. على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; هالكود بيمرق بلا خطأ، وعلى &lt;span dir="ltr"&gt;7.1.0-beta&lt;/span&gt; بيطلع هيك:

```
error TS2344: Type 'B' does not satisfy the constraint 'A'.
  'B' is only assignable to the non-distributed 'A', but 'A' has been distributed here.
```

التغيير دخل بـ [الـ &lt;span dir="ltr"&gt;PR&lt;/span&gt; رقم 64237](https://github.com/microsoft/TypeScript/pull/64237)، و&lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; بتقترح حلّين: شيل القيد إذا ما إلو لزوم، أو زيد شرط بيتأكد منه جوّا الفرع. هيك بيطلع الحل التاني:

```typescript
type Fixed<A extends number, B extends A> =
  A extends B ?
    never :
    B extends A ? Show<A, B> : never;
```

هالنسخة بتمرق على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; وعلى &lt;span dir="ltr"&gt;7.1.0-beta&lt;/span&gt; بلا أخطاء، فبتقدر تدمج التصليح على الفرع الأساسي قبل ما ترقّي. ولحتى تلاقي هالأخطاء بمشروعك، دوّر على نص الرسالة:

```bash
npx tsc --noEmit | grep -B1 "has been distributed here"
```

وفي مصدر تاني لأخطاء جديدة بهالترقية: أنواع الـ &lt;span dir="ltr"&gt;DOM&lt;/span&gt; بـ &lt;span dir="ltr"&gt;lib.d.ts&lt;/span&gt; تحدّثت، وممكن تطلّع أخطاء بكود بيلمس المتصفح. التفاصيل بـ [تذكرة تحديثات &lt;span dir="ltr"&gt;lib.d.ts&lt;/span&gt; لـ 7.1](https://github.com/microsoft/TypeScript/issues/63702).

## شو الميزات الجديدة بـ &lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt;؟

غير السرعة، &lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt; بيزيد `--target es2026`، والـ &lt;span dir="ltr"&gt;import attributes&lt;/span&gt; بالـ &lt;span dir="ltr"&gt;ambient modules&lt;/span&gt;، والـ `import source`، و&lt;span dir="ltr"&gt;API&lt;/span&gt; برمجي جديد. الـ &lt;span dir="ltr"&gt;import attributes&lt;/span&gt; والـ `import source` والـ &lt;span dir="ltr"&gt;API&lt;/span&gt; ما بيغيّروا شي بمشروعك إلا إذا استعملتهن. بس إذا ما محدد `target` بـ `tsconfig.json`، الافتراضي صار `es2026` بـ &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt;، وبـ &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; كان `es2025` (حسب `tsc --help --all` بالنسختين). يعني كود بيستعمل دوال &lt;span dir="ltr"&gt;ES2026&lt;/span&gt; بيمرق على البيتا، وعلى &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; بيطلّع أخطاء &lt;span dir="ltr"&gt;TS2339&lt;/span&gt; و&lt;span dir="ltr"&gt;TS2550&lt;/span&gt;.

### `--target es2026`

صار `es2026` خيار ثابت بـ `--target` و`--lib`. أهم شي فيه أنواع الدوال يلي استقرّت بـ &lt;span dir="ltr"&gt;ECMAScript 2026&lt;/span&gt;، متل `Math.sumPrecise()` و`Error.isError()` و`Map.prototype.getOrInsert()` و`Uint8Array.fromBase64()` و`Array.fromAsync()`.

على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; نفس الخيار بيطلّع خطأ &lt;span dir="ltr"&gt;TS6046&lt;/span&gt;، فلا تحطه بـ `tsconfig.json` قبل ما ينتقل كل الفريق. والأنواع ما بتضيف الدوال لبيئة التشغيل: تأكد إنو المتصفحات أو نسخة &lt;span dir="ltr"&gt;Node.js&lt;/span&gt; يلي بتشغّل عليها بتدعمها.

### الـ &lt;span dir="ltr"&gt;import attributes&lt;/span&gt; بالـ &lt;span dir="ltr"&gt;ambient modules&lt;/span&gt;

الـ &lt;span dir="ltr"&gt;import attributes&lt;/span&gt; هي الجزء `with { type: "..." }` بعد الـ &lt;span dir="ltr"&gt;import&lt;/span&gt;، وبتقول للمتصفح أو الـ &lt;span dir="ltr"&gt;bundler&lt;/span&gt; كيف يقرا الملف. بـ 7.1 فيك تعرّف نوع الملف حسب الـ &lt;span dir="ltr"&gt;attribute&lt;/span&gt; بدل امتداده، والمترجم بيطلّع خطأ إذا نسيت الـ &lt;span dir="ltr"&gt;attribute&lt;/span&gt;:

```typescript
declare module "*" with { type: "text" } {
  const content: string;
  export default content;
}
```

هالتعريفات ما بتجي مع &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt;، و&lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; بتنصح المكتبات ما تحطها بحزمها: كل مشروع بيكتبها لحاله. وصيغتها ما بتنقرا على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt;، فما بتنفع إلا بعد ما يرقّي كل يلي شغّالين على المشروع.

### `import source`

الـ `import source` اقتراح بـ &lt;span dir="ltr"&gt;ECMAScript&lt;/span&gt; بيرجّعلك الموديول بعد ما ينقرا وقبل ما يشتغل. أوضح استعمال إلو اليوم ملفات &lt;span dir="ltr"&gt;WebAssembly&lt;/span&gt;: بيرجّعلك `WebAssembly.Module` بتمرّره مباشرة لـ `WebAssembly.instantiate`. بدو `--module` على `esnext` أو `nodenext` أو `preserve`، ومعه `esnext` بـ `--lib` أو `--target`. وحسب &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; بيئات وأدوات كتير لسا ما بتدعمه لملفات &lt;span dir="ltr"&gt;JavaScript&lt;/span&gt;.

### الـ &lt;span dir="ltr"&gt;API&lt;/span&gt; البرمجي

&lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt; فيه &lt;span dir="ltr"&gt;API&lt;/span&gt; جديد لبناء أدوات فوق تحليل المترجم، مقسوم على مداخل متل `typescript/sync` و`typescript/async` و`typescript/fs` و`typescript/ast`. الـ &lt;span dir="ltr"&gt;API&lt;/span&gt; والبرنامج لازم يتسكّروا بعد الاستعمال (بـ `using`، أو يدوياً بـ `close()` و`dispose()`)، لأنو مترجم &lt;span dir="ltr"&gt;7.x&lt;/span&gt; مكتوب بـ &lt;span dir="ltr"&gt;Go&lt;/span&gt;، وبيحجز إلهن ذاكرة بطرفه ما بينضّفها الـ &lt;span dir="ltr"&gt;garbage collector&lt;/span&gt; تبع &lt;span dir="ltr"&gt;JavaScript&lt;/span&gt;.

وصف الإعلان بيسمّيه &lt;span dir="ltr"&gt;preview API&lt;/span&gt;، والفريق لسا عم يشتغل عليه مع فرق شريكة وبدّه ملاحظات. إذا عم تبني أداة فوقه، تعامل معه كمعاينة لحد النسخة النهائية.

## ليش الـ &lt;span dir="ltr"&gt;content mappers&lt;/span&gt; بدها `--runExternalCode`؟

الـ &lt;span dir="ltr"&gt;content mapper&lt;/span&gt; هو إضافة بتحوّل ملف متل `.vue` أو `.svelte` لنسخة &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; بيفهمها المترجم، وبتربط الأخطاء بمكانها بالملف الأصلي. ولأنه برنامج من برّا بيشغّله المترجم، `tsc` ما بيشغّله إلا مع `--runExternalCode`.

قبل 7.1، مشروع &lt;span dir="ltr"&gt;Volar&lt;/span&gt; كان بيعطي فحص الأنواع لهالملفات بالمحرر، بس أدوات الفحص من سطر الأوامر ما كانت تقدر تستعمل طريقته. هلق الفكرة يلي بنى عليها &lt;span dir="ltr"&gt;Volar&lt;/span&gt; صارت جزء من المترجم نفسه، و&lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; بتقول إنو في &lt;span dir="ltr"&gt;content mappers&lt;/span&gt; تجريبية أو جاهزة لـ &lt;span dir="ltr"&gt;Astro&lt;/span&gt; و&lt;span dir="ltr"&gt;Vue&lt;/span&gt; و&lt;span dir="ltr"&gt;Svelte&lt;/span&gt; و&lt;span dir="ltr"&gt;MDX&lt;/span&gt; و&lt;span dir="ltr"&gt;Ember&lt;/span&gt; و&lt;span dir="ltr"&gt;CSS Modules&lt;/span&gt;.

بتسجّل الـ &lt;span dir="ltr"&gt;content mapper&lt;/span&gt; بـ `tsconfig.json` حسب امتداد الملف:

```json
{
  "contentMappers": [
    {
      "package": "@vue/content-mapper",
      "extensions": [".vue"]
    }
  ]
}
```

اسم الحزمة من مثال &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt;، وحسب الإعلان هي مش منشورة على &lt;span dir="ltr"&gt;npm&lt;/span&gt; لحد هلق. وبعدها الفحص بيصير بـ `tsc --runExternalCode`.

&lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; نفسها بتقول إنو الـ &lt;span dir="ltr"&gt;content mapper&lt;/span&gt; عملياً أي برنامج بيشغّله المترجم، ولهيك الخيار صريح. يعني مع هالخيار، `tsc` بيشغّل كود من حزمة &lt;span dir="ltr"&gt;npm&lt;/span&gt; على جهازك وبالـ &lt;span dir="ltr"&gt;CI&lt;/span&gt;.

والـ [&lt;span dir="ltr"&gt;PR&lt;/span&gt; يلي ضاف الميزة](https://github.com/microsoft/typescript-go/pull/4712) بيشرح إنو الحزمة نفسها بتحدد كيف ينشغّل برنامجها. لهيك:

- حط `--runExternalCode` بس بالمشروع يلي فيه &lt;span dir="ltr"&gt;content mappers&lt;/span&gt;، مش بسكربت عام لكل المشاريع.
- ثبّت إصدار الحزمة بالـ &lt;span dir="ltr"&gt;lockfile&lt;/span&gt;، وراجعها متل أي حزمة بتشتغل وقت البناء.
- بـ &lt;span dir="ltr"&gt;VS Code&lt;/span&gt; ما بتشتغل إلا بـ &lt;span dir="ltr"&gt;workspace&lt;/span&gt; موثوق وبعد ما توافق على صلاحياتها، وفيك توقفها كلها بإعداد `js/ts.contentMappers.enabled`.

## شو هو &lt;span dir="ltr"&gt;tsrs&lt;/span&gt;، وهل بيغنيك عن &lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt;؟

الـ &lt;span dir="ltr"&gt;tsrs&lt;/span&gt; مترجم &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; تجريبي مكتوب بـ &lt;span dir="ltr"&gt;Rust&lt;/span&gt;، أعلنت عنه &lt;span dir="ltr"&gt;Cloudflare&lt;/span&gt; بـ 20 تشرين الأول 2026. لسا للتجربة، فما بيغنيك هلق عن &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; بمشروع شغّال.

حسب [بوست &lt;span dir="ltr"&gt;Cloudflare&lt;/span&gt;](https://blog.cloudflare.com/typescript-rust-port/)، هي و&lt;span dir="ltr"&gt;VoidZero&lt;/span&gt; شغّالين عليه مع &lt;span dir="ltr"&gt;Max Schwenk&lt;/span&gt; من &lt;span dir="ltr"&gt;Owner.com&lt;/span&gt;، بالتنسيق مع فريق &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt;. والمشروع ضمن أدوات &lt;span dir="ltr"&gt;Oxc&lt;/span&gt;، والهدف مش &lt;span dir="ltr"&gt;fork&lt;/span&gt; للغة. و[الـ &lt;span dir="ltr"&gt;README&lt;/span&gt; تبع المشروع](https://github.com/oxc-project/tsrs) بيشكر &lt;span dir="ltr"&gt;Max Schwenk&lt;/span&gt; على النقل لـ &lt;span dir="ltr"&gt;Rust&lt;/span&gt; و&lt;span dir="ltr"&gt;Owner.com&lt;/span&gt; على تمويل الشغل الأول، وبيقول: «&lt;span dir="ltr"&gt;Not affiliated with or endorsed by Microsoft&lt;/span&gt;».

عن الأرقام، &lt;span dir="ltr"&gt;Cloudflare&lt;/span&gt; بتقول إنو &lt;span dir="ltr"&gt;tsrs&lt;/span&gt; أسرع لحد 8 مرات من &lt;span dir="ltr"&gt;TypeScript 7.0&lt;/span&gt; وبياكل ذاكرة أقل بحوالي 70%، بنفس عدد الـ &lt;span dir="ltr"&gt;workers&lt;/span&gt;. هاد قياس أولي من الشركة نفسها، مش نتيجة متحققة من طرف تالت.

ونفس البوست بيقول إنو &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; أسرع من 7.0 لحد 2.5 مرة. بس الرسم يلي فيه قاس نسخة &lt;span dir="ltr"&gt;nightly&lt;/span&gt; (`7.1.0-dev.20261019.1`) قدّام `7.0.2`، مش البيتا المنشورة، وبالخيارات `--noEmit --incremental false --pretty false --checkers 4`. وأعلى رقم عند الطرفين طالع من نفس المشروع، &lt;span dir="ltr"&gt;mui-docs&lt;/span&gt;: 1.9 مرة عند &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; و2.58 مرة عند &lt;span dir="ltr"&gt;Cloudflare&lt;/span&gt;. يعني نفس المشروع بيطلعله رقم تاني لما تتغيّر النسخة وطريقة القياس.

آخر إصدار لـ &lt;span dir="ltr"&gt;tsrs&lt;/span&gt; على &lt;span dir="ltr"&gt;npm&lt;/span&gt; لحد 21 تشرين الأول بيبلّش بـ `0.18.0`، والـ &lt;span dir="ltr"&gt;README&lt;/span&gt; بيذكر فروقات معروفة بترتيب الأخطاء، وإنو `--init` و`--showConfig` مش مدعومين. إذا عندك فضول جرّبه على نسخة من مشروعك، وخلي البناء الحقيقي على &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; من &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt;.

## مين بيعنيه &lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt;، وشو يعمل هلق؟

&lt;span dir="ltr"&gt;TypeScript 7.1&lt;/span&gt; بيعني أكتر شي المشاريع الكبيرة على 7.0 يلي فحصها بطيء، ومشاريع &lt;span dir="ltr"&gt;Vue&lt;/span&gt; و&lt;span dir="ltr"&gt;Svelte&lt;/span&gt; و&lt;span dir="ltr"&gt;Astro&lt;/span&gt; يلي ضلّت على 6.0، والأدوات يلي بتقرا المترجم برمجياً. ويلي لسا على &lt;span dir="ltr"&gt;5.x&lt;/span&gt;، خطوته الأولى 6.0 مش البيتا.


| وضعك                                                                                                                                                                            | شو بيتغيّر عليك                                                                                                                                                                                                                          | شو تعمل هلق                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| على 7.0، وفحص الأنواع بالـ &lt;span dir="ltr"&gt;CI&lt;/span&gt; بطيء أو بيوقع من الذاكرة                                                                                       | فحص أسرع وذاكرة أقل حسب أرقام &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt;، وممكن تطلع أخطاء &lt;span dir="ltr"&gt;TS2344&lt;/span&gt; جديدة                                                                                             | جرّب البيتا على فرع وقيس (آخر قسم)                                                                          |
| لسا على &lt;span dir="ltr"&gt;5.x&lt;/span&gt; أو 6.0                                                                                                                           | خيارات علّمتها &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; &lt;span dir="ltr"&gt;deprecated&lt;/span&gt; بـ 6.0، متل `target: es5` و`downlevelIteration` و`baseUrl`، بتوقّف البناء على 7.0 و&lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; | رقّي لـ 6.0 أول ونضّف `tsconfig.json`، بعدين 7.0 المستقرة                                                   |
| مشروع &lt;span dir="ltr"&gt;Vue&lt;/span&gt; أو &lt;span dir="ltr"&gt;Svelte&lt;/span&gt; أو &lt;span dir="ltr"&gt;Astro&lt;/span&gt; أو &lt;span dir="ltr"&gt;MDX&lt;/span&gt; | إعلان 7.0 قال إنو لازم يضل على 6.0، و7.1 بيجيب الـ &lt;span dir="ltr"&gt;content mappers&lt;/span&gt;                                                                                                                                    | خلي الإنتاج على 6.0، وجرّب الـ &lt;span dir="ltr"&gt;content mapper&lt;/span&gt; تبع إطارك على فرع لما ينزل |
| أداة بتقرا المترجم برمجياً، متل &lt;span dir="ltr"&gt;typescript-eslint&lt;/span&gt;                                                                                            | 7.0 نزل بلا &lt;span dir="ltr"&gt;API&lt;/span&gt;، و7.1 فيه &lt;span dir="ltr"&gt;preview API&lt;/span&gt;                                                                                                                              | خلي الأداة على 6.0 جنب 7 لحد ما تعلن دعم 7.1                                                                |


الانتقال من &lt;span dir="ltr"&gt;5.x&lt;/span&gt; هو أطول خطوة، لأنو 7.0 ماشي على افتراضيات 6.0: `strict` صار مفعّل لحاله، و`types` صار `[]`، و`rootDir` صار `./`. حسب [إعلان 7.0](https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/)، النسخة معمولة لتتصرف متل 6.0 بفحص الأنواع وسطر الأوامر. لهيك &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; بتنصح تمرق على 6.0 أول، وبتتوقع إنو `rootDir` و`types` يفاجئوا الناس أكتر شي. على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; و&lt;span dir="ltr"&gt;7.1.0-beta&lt;/span&gt;، سطر `"baseUrl": "."` بـ `tsconfig.json` بيطلّع هيك:

```
error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
  Use '"paths": {"*": ["./*"]}' instead.
```

وإذا عندك أداة لسا بدها 6.0، &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt; نشرت مع 7.0 حزمة `@typescript/typescript6` لحتى تشغّل النسختين جنب بعض، وبتنصح تركّبها بـ &lt;span dir="ltr"&gt;npm aliases&lt;/span&gt; بـ `package.json`:

```json
{
  "devDependencies": {
    "@typescript/native": "npm:typescript@^7.0.2",
    "typescript": "npm:@typescript/typescript6@^6.0.2"
  }
}
```

هيك `npx tsc` بيشغّل 7.0، والأدوات يلي بتستورد `typescript` بتلاقي 6.0. وإعلان &lt;span dir="ltr"&gt;7.1 Beta&lt;/span&gt; ما بيذكر &lt;span dir="ltr"&gt;typescript-eslint&lt;/span&gt;، فشوف ملاحظات إصدار الأداة قبل ما تشيل 6.0.

## كيف تجرّب البيتا على مشروعك هلق؟

اعمل فرع لحاله، وقيس فحص الأنواع على 7.0 قبل ما ترقّي، بعدين ثبّت `typescript@beta` وقيس بنفس الطريقة. هيك بتعرف الفرق الحقيقي عندك، وبتلاقي الأخطاء الجديدة قبل ما توصل للفرع الأساسي.

1. قيس على النسخة الحالية، واحفظ رقمي `Total time` و`Memory used`:
   ```bash
    npx tsc --noEmit --extendedDiagnostics | grep -E "Total time|Memory used"
   ```
2. اعمل فرع وثبّت البيتا:
   ```bash
    git switch -c try/typescript-7.1-beta
    npm install -D typescript@beta
    npx tsc --version
   ```

    آخر أمر بيطلّعلك `Version 7.1.0-beta`.
3. شغّل نفس أمر القياس على نفس الجهاز. عيد كل قياس 3 مرات وخود الرقم الوسطاني، لأنو تشغيلة وحدة ممكن تضلّلك.
4. صلّح أخطاء الـ &lt;span dir="ltr"&gt;distributive conditional types&lt;/span&gt; والـ &lt;span dir="ltr"&gt;DOM&lt;/span&gt; (القسم التاني)، وتأكد إنو كل تصليح بيمرق على &lt;span dir="ltr"&gt;7.0.2&lt;/span&gt; كمان، لأنو الـ `target` الافتراضي مش نفسه بالنسختين (القسم التالت). التصليح يلي بيمرق على النسختين ادمجه على الفرع الأساسي من هلق.
5. كرّر القياس بالـ &lt;span dir="ltr"&gt;CI&lt;/span&gt; على الفرع، لأنو جهاز الـ &lt;span dir="ltr"&gt;CI&lt;/span&gt; غالباً غير جهازك. وإذا البناء عندك بيوقع من الذاكرة، هونيك بيبيّن الفرق.

خلي الإنتاج على 7.0 هلق. حسب &lt;span dir="ltr"&gt;Microsoft&lt;/span&gt;، الـ &lt;span dir="ltr"&gt;RC&lt;/span&gt; جاي بعد حوالي شهر من البيتا، والنسخة النهائية بعدها بفترة قصيرة. ولحد 21 تشرين الأول 2026، النسخة المستقرة على [&lt;span dir="ltr"&gt;npm&lt;/span&gt;](https://www.npmjs.com/package/typescript) هي `7.0.2`.

إذا عم تخلي وكيل برمجة متل &lt;span dir="ltr"&gt;Claude Code&lt;/span&gt; يعمل الترقية، اطلب منه يشتغل على الفرع بس، ويرجّعلك أرقام القياس على النسختين قبل ما يصلّح أي خطأ. وبـ [قسم مهارات &lt;span dir="ltr"&gt;AI&lt;/span&gt;](/products/c/ai-skills) في حزم مهارات لـ &lt;span dir="ltr"&gt;Claude Code&lt;/span&gt; لسا قيد التحضير لشغلك اليومي.

إذا بدك ريبو تتمرّن عليه على الخطوات قبل كود شغلك، &lt;span dir="ltr"&gt;Secure Clinic API Suite&lt;/span&gt; و&lt;span dir="ltr"&gt;WhatsApp Number Extractor&lt;/span&gt; بـ [صفحة المشاريع](/work) مكتوبين بـ &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt;، والكود كامل على &lt;span dir="ltr"&gt;GitHub&lt;/span&gt;.

ولحدا جديد بالفريق لسا عم يتعلم &lt;span dir="ltr"&gt;TypeScript&lt;/span&gt; من أولها، [خارطة طريق المبرمج 2026](/products/roadmap-2026) بتحطها لغة الويب بمسار الواجهات، ومعها خطة 90 يوم.

قديش بياخد `tsc --noEmit` عندك هلق، وقديش صار على البيتا؟

## FAQ

**هل TypeScript 7.1 Beta جاهز للإنتاج؟**

لأ. هي نسخة بيتا، والنسخة المستقرة على npm لحد 21 تشرين الأول 2026 هي 7.0.2. جرّب البيتا على فرع وبالـ CI، وخلي الإنتاج على 7.0 لحد ما تنزل النسخة النهائية.

**إمتى بتنزل النسخة النهائية من TypeScript 7.1؟**

Microsoft ما حددت تاريخ. إعلان البيتا بيقول إنو الـ RC جاي بعد حوالي شهر، والنسخة النهائية بعده بفترة قصيرة.

**هل لازم غيّر tsconfig.json لحتى جرّب البيتا؟**

لأ. التثبيت بـ npm install -D typescript@beta بيكفي، والـ contentMappers اختيارية. بس في شغلتين بيتغيّروا بلا ما تلمس شي: إذا ما محدد target، الافتراضي صار es2026 بدل es2025، والتغيير بالـ distributive conditional types ممكن يطلّع أخطاء جديدة.

**هل الـ content mappers بتشتغل لحالها بـ VS Code؟**

إي، بشرطين: الـ workspace لازم يكون موثوق، ولازم توافق على صلاحيات الـ content mapper. وفيك توقفها كلها من إعداد js/ts.contentMappers.enabled.

**هل tsrs أسرع من TypeScript تبع Microsoft؟**

حسب Cloudflare إي، لحد 8 مرات من 7.0 بنفس عدد الـ workers، بس هاد قياس أولي من الشركة نفسها. tsrs لسا تجريبي وآخر إصدار إلو على npm من سلسلة 0.18، فقيسه على مشروعك قبل ما تصدّق أي رقم.
