تايب سكريبت

**تايب اسكربت**  هي لغة برمجة مفتوحة المصدر تم تطويرها وصيانتها بواسطة مايكروسوفت، وهي مجموعة شاملة من نصوص جافا سكريبت الصارمة، ويضيف كتابة ثابتة اختيارية للغة. وقد عمل أندرس هيلسبرغ ، المهندس الرئيسي لـ سي شارب ومبدع أوبجكت باسكال وتوربو باسكال، على تطوير **تايب اسكربت**. يمكن استخدام **تايب اسكربت** لتطوير تطبيقات جافا سكريبت للتنفيذ من جانب العميل أو من جانب الخادم ( نود.جي إس ).

تم تصميم نسخة مطبوعة على الآلة الكاتبة لتطوير التطبيقات الكبيرة و يجمع إلى جافا سكريبت. بما أن **تايب اسكربت** عبارة عن مجموعة كبيرة من جافا سكريبت ، فإن برامج جافا سكريبت الموجودة هي أيضًا برامج تايب اسكربت صالحة.

يدعم تايب اسكربت ملفات التعريف التي يمكن أن تحتوي على معلومات الكتابة الخاصة بمكتبات جافا سكريبت الموجودة، مثلما يمكن أن تصف ملفات رؤوس سي++ بنية ملفات الكائن الموجودة . وهذا يمكّن البرامج الأخرى من استخدام القيم المعرفة في الملفات كما لو كانت مكتوبة بشكل ثابت كيانات **تايب اسكربت**. هناك ملفات رأس طرف ثالث للمكتبات شعبية مثل مسج ، مونغو دي بي ، و د3 (إطار جافا سكريبت) . تتوفر أيضًا رؤوس تايب اسكربت للوحدات الأساسية نود.جي إس ، مما يسمح بتطوير برامج نود.جي إس في **تايب اسكربت**.

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

يتم تضمين **تايب اسكربت** لغة برمجة من الدرجة الأولى في مايكروسوفت فيجوال ستوديو 2013 Update 2 والإصدارات الأحدث، بجانب سي شارب ولغات مايكروسوفت الأخرى. يسمح ملحق رسمي لبرنامج مايكروسوفت فيجوال ستوديو 2012 بدعم **تايب اسكربت** أيضًا.

## التاريخ

تم إصدار **تايب اسكربت** لأول مرة في أكتوبر 2012 (الإصدار 0.8) ، بعد عامين من التطوير الداخلي في مايكروسوفت. بعد فترة وجيزة من الإعلان، أشاد ميجيل دي إيكازا باللغة نفسها، لكنه انتقد عدم وجود دعم IDE الناضج بعيدًا عن مايكروسوفت فيجوال ستوديو ، والذي لم يكن متاحًا على Linux و OS X في ذلك الوقت.  هناك دعم في IDEs أخرى، لا سيما في اكبلس ، من خلال المكونات الإضافية التي ساهمت بها Palantir Technologies . محررات النصوص المختلفة، بما في ذلك ايماكس وفيم وسابليم تكست و Webstorm و أتوم و مايكروسوفتميجيل دي إيكازامايكروسوفت فيجوال ستوديو إكلبسإيماكسفيمسابليم تكستأتوم كما يدعم Visual Studio Code تايب اسكربت.

قام **تايب اسكربت** 0.9 ، الذي صدر في عام 2013 ، بإضافة دعم للأدوية. تم إصدار **تايب اسكربت** 1.0 في مؤتمر مايكروسوفت Build المطور في عام 2014. يوفر  مايكروسوفت فيجوال ستوديو 2013 Update 2 دعمًا مضمنًا لـ **تايب اسكربت**.

في يوليو 2014 ، أعلن فريق التطوير عن مترجم جديد لـ **تايب اسكربت** ، مدعياً مكاسب أداء 5 ×. في الوقت نفسه، تم نقل شفرة المصدر، التي استضافت في البداية على كود بلاكس ، إلى غيت هاب .

في 22 سبتمبر 2016 ، تم إصدار **تايب اسكربت** 2.0 ؛ قدم العديد من الميزات، بما في ذلك قدرة المبرمجين على منع المتغيرات بشكل اختياري من تعيين قيم.

## تصميم اللغة

نشأت **تايب اسكربت** من أوجه القصور المتصورة في جافا سكريبت لتطوير التطبيقات واسعة النطاق سواء في مايكروسوفت أو بين عملائها الخارجيين. أدت التحديات في التعامل مع شفرة جافا سكريبت المعقدة إلى الطلب على الأدوات المخصصة لتسهيل تطوير المكونات في اللغة.

سعى مطورو **تايب اسكربت** إلى حل لا يكسر التوافق مع المعيار ودعمه عبر الأنظمة الأساسية. مع العلم أن الاقتراح القياسي الحالي ECMAScript وعدت الدعم المستقبلي للبرمجة القائمة على الطبقة، واستند تايب اسكربت على هذا الاقتراح. أدى ذلك إلى مترجم جافا سكريبت مع مجموعة من الامتدادات اللغوية النحوية، وهي مجموعة كبيرة تعتمد على الاقتراح، والتي تحول الإضافات إلى جافا سكريبت عادية. من هذا المنطلق، كان تايب اسكربت بمثابة معاينة لما يمكن توقعه من ECMAScript 2015. والجانب الفريد ليس في الاقتراح، ولكنه تمت إضافته إلى **تايب اسكربت** ، هو كتابة ثابتة اختيارية  تمكن تحليل اللغة الثابت، مما يسهل الأدوات ودعم IDE.

### دعم ECMAScript 2015

تضيف **تايب اسكربت** الدعم إلى ميزات مثل الفئات والوحدات النمطية وبناء جملة دالة السهم كما هو مقترح في معيار ECMAScript 2015

## استخدام ملفات التصريحات في تايب سكريبت

أصبح استخدام ملفات التصريحات سهلًا جدًّا منذ النسخة 2.0 من تايب سكريبت، إذ أصبح الحصول عليها واستخدامها والعثور عليها أبسط من ذي قبل. ستساعدك هذه الصفحة على القيام بهذه العمليات الثلاث.

تنزيل ملفات التصريحات

على سبيل المثال، يمكن الحصول على التصريحات لمكتبةٍ مثل lodash ببساطة بالأمر التالي فقط:
```shell
npm install --save @types/lodash
```
من الجدير بالذكر أنّ تنزيل حزمةِ `@types` لمكتبةٍ غير ضروري إذا كانت حزمة مدير حزمة العقدة تُحزِّم ملفّ تصريحاتها، كما وصفنا في صفحة نشر ملفات التصريحات.

## الاعتماد على ملف التصريحات

بعد الخطوة السابقة، يمكنك استخدام lodash في شيفرة تايب سكريبت مباشرةً. ويمكنك الاعتماد عليها في الوحدات والشيفرة العامة (global code) كذلك.

مثلًا، بعد تثبيت تصريحاتك باستخدام `npm install`، يمكنك استعمال المكتبة كالتالي:
```shell
import * as _ from "lodash";
_.padStart("Hello TypeScript!", 20, " ");
```
وإن كنت لا تستخدم الوحدات، فيمكنك فقط استعمال المتغير العام الذي توفره المكتبة (`_` في مكتبة lodash):
```shell
_.padStart("Hello TypeScript!", 20, " ");
```


## البحث والعثور عن ملفات التصريحات

تحمل حزم تصريحات الأنواع في أغلب الأحوال نفسَ اسم الحزمة على `npm`، لكن مع السابقة `@types/`، لكن إن احتجت إلى البحث عنها، فاستعمل محرك البحث هذا للبحث عن الحزمة لمكتبتك.

## سمات اللغة

**تايب اسكربت** هو ملحق لغة يضيف ميزات إلى إي سي إم ايه سكريبت 5. وتتضمن الميزات الإضافية:

* اكتب الشروح و وقت التحويل البرمجي نوع التحقق
* اكتب الاستدلال
* اكتب محو
* واجهات
* نوع تعداد
* Mixin
* عام
* مساحات
* الصفوف (tuple)
* ترقب
يتم إرجاع الميزات التالية من ECMAScript 2015:
* الطبقات
* وحدات
* بناء جملة «السهم» المختصر للدوال المجهولة
* المعلمات الاختيارية والمعلمات الافتراضية

من الناحية النحوية، تكون تايب اسكربت مشابهة جدًا لـ جسكربت .نت، وهو تطبيق مايكروسوفت آخر لمقياس اللغة ECMA-262 الذي أضاف دعمًا للكتابة الثابتة وخصائص اللغة الكلاسيكية المنحى على الكائنات مثل الفصول الدراسية، وراثة، وواجهات، ومساحات الأسماء.

### التوافق مع جافا سكريبت

**تايب اسكربت** عبارة عن مجموعة شاملة جدًا من إي سي إم ايه سكريبت 2015 ، والتي تعد بحد ذاتها مجموعة شاملة من ECMAScript 5 ، والتي يشار إليها عادةً باسم جافا سكريبت. على هذا النحو، يعد برنامج جافا سكريبت أيضًا برنامج تايب اسكربت صالحًا، ويمكن لبرنامج **تايب اسكربت** أن يستهلك جافا سكريبت بسلاسة. بشكل افتراضي، يستهدف المحول البرمجي ECMAScript 5 ، المعيار السائد الحالي، ولكنه قادر أيضًا على إنشاء التركيبات المستخدمة في ECMAScript 3 أو 2015.

باستخدام **تايب اسكربت** ، من الممكن استخدام شفرة جافا سكريبت الموجودة، وتضمين مكتبات جافا سكريبت الشائعة، والاتصال بالكود المتولد من تايب اسكربت من جافا سكريبت أخرى. يتم توفير تعريفات النوع لهذه المكتبات مع شفرة المصدر.

### اكتب التعليقات التوضيحية

يوفر **تايب اسكربت** الكتابة الثابتة عبر التعليقات التوضيحية للنوع لتمكين الكتابة من التحقق في وقت التحويل البرمجي . هذا أمر اختياري ويمكن تجاهله لاستخدام الكتابة الديناميكية الدورية لجافا سكريبت.
```typescript
function add(left: number, right: number): number
{
 return left + right;
}
```
شروح لأنواع بدائية هي `number`، `boolean`و `string`. البنى الضعيفة أو الديناميكية هي من النوع `any`.

يمكن تصدير التعليقات التوضيحية إلى *ملف تعريفات* منفصل لتوفير معلومات الكتابة للنصوص النصية لـ تايب اسكربت باستخدام الأنواع التي تم تجميعها بالفعل في جافا سكريبت. يمكن الإعلان عن التعليقات التوضيحية لمكتبة جافا سكريبت الحالية، كما تم القيام به لـ نود.جي إس وجي كويري .

يستخدم برنامج التحويل البرمجي لـ **تايب اسكربت** من نوع الاستدلال لاكتشاف الأنواع عندما لا يتم إعطاء الأنواع. على سبيل المثال، `add`يمكن الاستدلال على الطريقة الواردة في التعليمة البرمجية أعلاه كإعادة `number`ولو لم يتم تقديم تعليق توضيحي لنوع الإرجاع. ويستند هذا على أنواع ثابتة `left`و `right`يجري `numbers`، والمعرفة المترجم أن نتيجة إضافة اثنين `numbers`هي دائما `number`. ومع ذلك، فإن التصريح بوضوح بنوع الإرجاع يسمح للمترجم بالتحقق من صحته.

إذا لم يكن بالإمكان الاستدلال على أي نوع بسبب نقص الإعلانات، فإنه يتم تعيينه افتراضيًا إلى `any`النوع الديناميكي . تدعم قيمة `any`النوع العمليات نفسها كقيمة في جافا سكريبت ويتم تنفيذ فحص الحد الأدنى من النوع الثابت لعمليات على `any`القيم.

#### ملفات الإعلان

عند تجميع برنامج نصي لـ تايب اسكربت، يوجد خيار لإنشاء *ملف* تعريف (مع الامتداد `.d.ts`) يعمل واجهة (حوسبة) إلى هندسة البرمجيات بالمكونات في جافا سكريبت المترجمة. في هذه العملية، يقوم المترجم بإبعاد جميع هيئات الدالة والوظيفية ويحفظ فقط تواقيع الأنواع التي يتم تصديرها. يمكن بعد ذلك استخدام ملف التصريح الناتج لوصف أنواع تايب اسكربت الظاهرية المصدرة لمكتبة جافا سكريبت أو وحدة نمطية عندما يستهلكها مطور خارجي من تايب اسكربت.

يتشابه مفهوم ملفات التعريف مع مفهوم ملف الرأس الموجود في C / C ++ .
```typescript
declare module arithmetics {
 add(left: number, right: number): number;
 subtract(left: number, right: number): number;
 multiply(left: number, right: number): number;
 divide(left: number, right: number): number;
}
```
يمكن كتابة ملفات تعريف النوع يدويًا لمكتبات جافا سكريبت الحالية، كما تم القيام به لـ jQuery و Node.js.

يتم استضافة مجموعات كبيرة من ملفات التصريح لمكتبات جافا سكريبت الشائعة على GitHub في DefinitelyTyped و Typings Registry . يتم توفير أداة مساعدة لسطر الأوامر تسمى `[https://github.com/typings/typings typings]`للمساعدة في البحث

### الطبقات

يدعم تايب اسكربت فئات ECMAScript 2015 التي تدعم دعم التعليقات التوضيحية بالنوع الاختياري.
```typescript
class Person {
 private name: string;
 private age: number;
 private salary: number;

 constructor(name: string, age: number, salary: number) {
 this.name = name;
 this.age = age;
 this.salary = salary;
 }

 toString(): string {
 return `${this.name} (${this.age}) (${this.salary})`; // As of version 1.4
 }
}
```


### الأدوية

يدعم تايب اسكربت البرمجة العامة .

### الوحدات ومساحات الأسماء

يميز تايب اسكربت بين الوحدات ومساحات الأسماء. كلتا الميزتين في دعم تايب اسكربت يدعمان الطبقات والواجهات والوظائف والمتغيرات في الحاويات. تستخدم مساحات الأسماء (الوحدات الداخلية سابقًا) تعبير الدالة المستدعى على الفور من جافا سكريبت لتغليف التعليمات البرمجية، بينما تستخدم الوحدات النمطية (وحدات خارجية سابقًا) أنماط مكتبة جافا سكريبت للقيام بذلك ( AMD أو CommonJS ).

## ادوات التطوير
### مترجم

مترجم نسخة مطبوعة على الآلة الكاتبة، واسمه `tsc`هو، وكتب في نسخة مطبوعة على الآلة الكاتبة . ونتيجة لذلك، يمكن تجميعها في جافا سكريبت عادية ويمكن بعد ذلك تنفيذها في أي محرك جافا سكريبت (على سبيل المثال، متصفح). تأتي حزمة برنامج التحويل البرمجي مجمعة مع مضيف برنامج نصي يمكنه تنفيذ المحول البرمجي. وهو متوفر أيضًا كحزمة نود.جي إس التي تستخدم Node.js كمضيف.

يوجد أيضًا إصدار ألفا من برنامج التحويل البرمجي من جانب العميل في جافا سكريبت، والذي ينفذ شفرة تايب اسكربت على الفور، عند تحميل الصفحة.

يدعم الإصدار الحالي من المحول البرمجي ECMAScript 5 بشكل افتراضي. يُسمح للخيار باستهداف ECMAScript 2015 للاستفادة من ميزات اللغة الخاصة بهذا الإصدار (مثل المولدات). تتوفر الفصول، على الرغم من كونها جزءًا من معيار ECMAScript 2015 ، في كلا الوضعين.

### دعم IDE ومحرر

* مايكروسوفت توفر المكونات في ل البصرية ستوديو 2012 و WebMatrix ، الدعم المتكامل الكامل في البصرية ستوديو 2013 ، البصرية ستوديو 2015 ، والأساسي دعم محرر نص نص سامية ، إيماكس وفيم .
* Visual Studio Code عبارة عن مصدر برمجي مفتوح المصدر، وهو برنامج التعليمات البرمجية المصدر الذي تم تطويره بواسطة مايكروسوفت استنادًا إلى إلكترون . وهو يدعم تايب اسكربت بالإضافة إلى العديد من اللغات الأخرى، ويقدم ميزات مثل تصحيح الأخطاء وإكمال الشفرة الذكية .
* alm.tools هو IDE سحابة مفتوحة المصدر ل تايب اسكربت بنيت باستخدام تايب اسكربت و ReactJS و TypeStyle.
* JetBrains يدعم نسخة مطبوعة على الآلة الكاتبة مع إنجاز قانون، إعادة الهيكلية وتصحيح الأخطاء في بيئات التطوير التي بنيت على منصة IntelliJ لل، مثل PhpStorm 6، WebStorm 6، و إنتيليج إيديا ،  وكذلك على البصرية ستوديو الإضافية في والإرشاد، ReSharper 8.1.
* أتوم (محرر نصوص) على تايب اسكربت Plugin من Basarat مع دعم لإكمال التعليمات البرمجية والتنقل والتنسيق والترجمة السريعة.
* يدعم Cloud9 IDE و Codenvy عبر الإنترنت تايب اسكربت.
* يتوفر مكون إضافي لـ نت بينز
* يتوفر مكون إضافي لـ إيماكس (الإصدار Kepler)
* يتوفر TypEcs لـ اكبلس .
* مايكروسوفتتوفر مايكروسوفت PlugScript Plugin سابليم تكست .
* يدعم Cross Platform Cloud IDE Codeanywhere تايب اسكربت.
* Webclipse البرنامج المساعد Eclipse المصمم لتطوير تايب اسكربت و Angular 2 .
* بيئة تطوير متكاملة Angular هي بيئة تطوير متكاملة متوفرة عبر npm لتطوير تطبيقات تايب اسكربت و Angular 2 ، مع دعم طرفية مدمج.
* المد والجزر - بيئة تطوير تفاعلية تايب اسكربت ل إيماكس .
* Tsuquyomi - البرنامج المساعد فيم الذي يستخدم TSServer ويوفر ميزات مثل اكتمال التعليمات البرمجية والتنقل وبناء الجملة والتحقق من الأخطاء الدلالي.

### التكامل مع أدوات أتمتة البناء

باستخدام المكونات الإضافية ، يمكن دمج تايب اسكربت مع أدوات التنفيذ التلقائي، بما في ذلك Grunt (grunt-ts ) و أباتشي ميفن (تايب اسكربت Maven Plugin ) و Gulp (gulp -تايب اسكربت ) و Gradle (تايب اسكربت Gradle Plugin ).

## انظر أيضًا

* أنجولار
* دارت (لغة برمجة)
* كافي سكريبت

## مراجع

## وصلات خارجية

* 
* 
* تايب اسكربت project at غيت هاب
* تايب اسكربت Language Specification
* CATS Cross Platform تايب اسكربت Editor
* Awesome-تايب اسكربت: A community-supported list of tools and resources related to تايب اسكربت
* تايب اسكربت Tutorial

تصنيف:مترجمات من مصدر إلى مصدر
تصنيف:برمجيات 2012
تصنيف:برمجيات تستخدم رخصة أباتشي
تصنيف:برمجيات متعددة المنصات
تصنيف:عائلة جافا سكريبت
تصنيف:لغات برمجة أنشئت في 2012
تصنيف:لغات برمجة إستاتيكية
تصنيف:لغات برمجة نصية