TypeScript

من موسوعة حسوب
اذهب إلى: تصفح، ابحث

لغة TypeScript لغة برمجة مفتوحة المصدر من تطوير شركة Microsoft، تُعدّ امتدادًا وتوسعةً للغة JavaScript، حيث أضافت العديد من المزايا إليها، خاصّة دعم الأنواع (types) الذي يُساعد على تجنّب الأخطاء والعلل البرمجيّة وتوفير شيفرة برمجية نقية قابلة للقراءة أكثر من شيفرة JavaScript العادية.

لغة TypeScript

مدخل إلى TypeScript

تعرَّف على أساسيات اللغة وكيفية استخدامها في تطبيق JavaScript الخاص بك.

الأنواع الأساسية

ستجد في هذا القسم شرحًا وافيًا حول أنواع البيانات الأساسية في لغة TypeScript.

التصريح عن المتغيّرات

يشرح هذا القسم كيفية التصريح عن جميع أنواع المتغيرات (Variable Declarations) والثوابت باستعمال var و let و const. يتطرق أيضًا إلى شرح كيفية تفكيك ونشر المصفوفات والكائنات عند التصريح عن المغيرات.

الواجهات

تركيز التحقق من الأنواع (type-checking) على شكل قيم من مبادئ TypeScript الأساسية. يُصطلَح عليه أحيانًا بالتعبير duck typing أو التحقق من الأنواع الفرعيّة هيكليًّا (structural subtyping). تعمل الواجهات (interfaces) في TypeScript على تسمية هذه الأنواع، وهي طريقة قويّة لتعريف عقود (contracts) داخل شيفرتك أو عقود مع شيفرةٍ خارج مشروعك.

الأصناف

بدءًا من الإصدار ECMAScript 2015 المعروف كذلك بالإصدار ECMAScript 6، يُمكن لمبرمجي JavaScript بناء التطبيقات باستخدام البرمجة كائنيّة التوجّه المعتمِدة على الأصناف (classes). وتسمح TypeScript للمطورين باستعمال هذه التقنيات الآن، وتُترجِمها إلى لغة JavaScript تعمل على جميع المنصات المتصفحات المعروفة، دون الحاجة إلى انتظار دعم النسخة التالية من JavaScript.

الدوال

تلعب الدوال (functions) الدور الرئيسيّ في وصف كيفيّة القيام بالأمور. يشرح هذا القسم الدوال في TypeScript وأنواعها وكيفية تعريفها والمعاملات المُمرَّرة إليها. يعرِّج أيضًا على شرح الكلمة this المفتاحية والدوال السهمية.

الأنواع المُعمَّمة

الأنواع المُعمّمة (generics) من الأدوات الرئيسية التي تُساعد على بناء مكوّنات قابلة لإعادة الاستعمال في لغات مثل C#‎ وJava، إذ تُعطي القُدرة على إنشاء مكوّنات يُمكن لها العمل مع عدّة أنواعٍ من البيانات عوضًا عن نوع واحد فقط. ما يسمح للمستخدمين بالاعتماد على هذه المكونات واستعمال الأنواع الخاصة بهم.

الثوابت المتعددة

تسمح الثوابت المتعدّدة بتعريف مجموعة مُسمّاةٍ من الثوابت، إذ يُسهّل استخدام الثوابت المتعدّدة توضيحَ نية استعمال الشيفرة أو إنشاء مجموعة حالات مختلفة. تُوفّر TypeScript كلا من الثوابت المتعددة المعتمِدة على الأعداد وتلك المُعتمِدة على السلاسل النصية كذلك.

استنتاج الأنواع

سيغطّي هذا القسم آلية استنتاج الأنواع في TypeScript، خاصّةً أين وكيف تُستنتَج الأنواع.

توافقية الأنواع

توافقيّة الأنواع في TypeScript مبنيّةٌ على التحقق من الأنواع الفرعيّة هيكليًّا (structural subtyping). والتحقّق من الأنواع هيكليًّا طريقةٌ للربط بين الأنواع حسب عناصرها فقط لا غير. وهذا مُعاكسٌ للتحقق من الأنواع اسميًّا (nominal typing).

أنواع متقدمة

تدعم TypeScript أنواعًا متقدمةً من البيانات يمكن استعمالها في شيفرتك. من هذه الأنواع: أنواع التقاطع والاتحاد والتمييز والقيم الفارغة ...إلخ. توفر أيضًا حرّاس الأنواع التي تستعمل لأداء عدة وظائف منها التخلص من أنواع محددة مثل النوع null. توفِّر أيضًا ميّزة الأنواع الشرطيّة التي تسمح لنا بالتعبير عن اقترانات أنواع غير موحّدة.

الرموز

هي نوعٌ أوليّ مثل النوع ‎number‎ والنوع ‎string‎ وهي فريدة وغير قابلة للتعديل. يُمكن استخدام الرموز كمفاتيح لخاصيات الكائنات كما السلاسل النصيّة، ويُمكن كذلك مزجها مع تصريحات الخاصيات المحسوبة عن خاصيات الكائنات وعناصر الأصناف.

المكررات (iterators) والمولدات (generators)

طريقة التعامل مع المكرِّرات في TypeScript، وجملة for..of.

الوحدات

أضافت نسخة ECMAScript 2015 مبدأ الوحدات (modules) إلى لغة JavaScript، وهذا المبدأ موجود كذلك في لغة TypeScript. تُنفَّذ الوحدات داخل مجالها (scope) الخاص وليس في المجال العام (global scope)؛ هذا يعني بأنّ المتغيّرات، والدوال، والأصناف وغيرها من الكائنات المعرفة في وحدةٍ لا تكون مرئيّةً خارج الوحدة إلا في حالة صُدِّرَت صراحةً وبوضوح. في المقابل، إذا أردت استخدام متغير أو دالة أو صنف أو واجهة أو غير ذلك ممّا صُدِّر من طرف وحدة أخرى، فلا بد لك أن تَسْتَورِدَها.

مجالات الأسماء

يشرح هذا القسم كيفيّة تنظيم شيفرتك باستخدام مجالات الأسماء (namespaces) في لغة TypeScript.

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

تُوضِّح هذه الصّفحة الأساليب التي يُمكن بها تنظيم الشيفرة باستخدام مجالات الأسماء والوحدات في TypeScript. سيغطّي هذا القسم بعض المواضيع المتقدّمة في آليّة استخدام مجالات الأسماء والوحدات، وسيتطرّق إلى بعض الأخطاء الشائعة التي يقع فيها من يستخدم هذين الأسلوبين في TypeScript.

تقرير الوحدات

تقريرُ (أو حلُّ) الوحداتِ (Module resolution) هي العمليّة التي يعتمد عليها المترجم (compiler) لاكتشاف ما يُشير إليه استيرادٌ (import) معيّن. تتطلّب قراءة هذا القسم فهمًا عامًّا للوحدات، لذا انظر توثيق الوحدات للاستزادة قبل البدء بقراءته.

دمج التصريحات

مبدأ دمج التصريحات (declaration merging) من المزايا التي تنفرد بها TypeScript. تصِف بعض المبادئ الفريدة الموجودة في لغة TypeScript شكل كائنات JavaScript على مستوى الأنواع. سيُساعد فهم هذا المبدأ على العمل مع شيفرة JavaScript الموجودة مسبقًا. إضافة إلى أنّها توفّر قدرة على إعمال مبادئ تجريد (abstraction concepts) أكثر تقدّمًا.

JSX

JSX بنيةٌ (syntax) مشابهةٌ للغة XML يُمكن تضمينها وتحويلها إلى شيفرة JavaScript صالحة، لكن آلية عملية التحويل تختلف من تطبيق (implementation) إلى آخر. اشتهرت JSX باستخدامها مع مكتبة React، لكنها تملك تطبيقات أخرى غير React. تدعم لغة TypeScript تضمين JSX، وتدقيق الأنواع فيها، وكذا ترجمة JSX إلى JavaScript مباشرةً.

المزخرفات

مع إضافة الأصناف إلى TypeScript ونسخة ES6، فقد ظهرت كذلك حاجةٌ إلى ميزات إضافية لدعم تعديل الأصناف وعناصر الأصناف أو توصيفها (annotating). توفّر المزخرفات (Decorators) طريقة لإضافة توصيفات وبنية برمجة وصفيّة (meta-programming) لتصريحات الأصناف وعناصرها. المزخرفات حاليًّا اقتراح في المرحلة 2 (stage 2 proposal) في JavaScript وهي متوفّرة كميّزة تجريبيّة في TypeScript.

المخاليط

إضافةً إلى تسلسلات البرمجة كائنية التوجه التقليدية، هناك كذلك طريقة شائعة لبناء أصناف من مكونات قابلة لإعادة الاستعمال، وهي بناؤها عبر دمج أصناف جزئية أبسط. قد تكون فكرة المخاليط (mixins) أو السمات (traits) في لغات مثل Scala مألوفة بالنسبة إليك، وقد أصبح نمط المخاليط مشهورًا في مجتمع JavaScript كذلك.

تعليمات الشرطات المائلة الثلاث

تعليمات الشرطات المائلة الثلاث (Triple-slash directives) هي تعليقات تكتب في سطر واحد تحتوي على وسم XML واحد. تُستخدَم محتويات التعليق كتعليمات (إرشادات) للمترجم.

التحقق من الأنواع في ملفات JavaScript

أصبحت TypeScript منذ النسخة 2.3 تدعم التحقق من الأنواع والإبلاغ عن الأخطاء في ملفّات ‎.js‎ مع خيار المترجم ‎--checkJs‎.

ملفات التعريفات

مدخل إلى ملفات التصريحات (Declaration Files)

هذا القسم مصمَّم لإرشادك إلى كيفيّة كتابة ملفّات تصريحاتٍ (Declaration Files) عاليّة الجودة في TypeScript. يفترض هذا القسم أنّ لك معرفةً بأساسيّات لغة TypeScript. اقرأ توثيق لغة TypeScript في الأعلى لتفهم مبادئ اللغة الأساسيّة، خاصّة الأنواع ومجالات الأسماء.

هياكل المكتبات

طريقة هيكلة ملفّ التصريحات الخاص بك تعتمد عمومًا على كيفيّة اعتماد المستخدمين على المكتبة. هناك عدّة طرق يُمكن بها توفير المكتبة ليستخدمها الآخرون في JavaScript. وستحتاج إلى كتابة ملفّ تصريحاتٍ ملائم حسب هيكل المكتبة التي ترغب بكتابة ملفّ تصريحات لها. يغطي هذا القسم كيفيّة التعرّف على أنماط المكتبات الشائعة، وكيفيّة كتابة ملف تصريحاتٍ مناسب لنمط المكتبة.

ملفات التصريحات اعتمادًا على الأمثلة

الهدف من هذا القسم هو تعليمك كيفيّة كتابة ملف تعريف عالي الجودة. هذا القسم يريك أولًا توثيق واجهة برمجية (API) معيّنة مع طريقة استعمالها، ثم يشرح كيفية كتابة التصريح الملائم.

افعل ولا تفعل

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

التعمق في ملفات التصريحات

دليلك لكتابة ملفّات تعريفات معقّدة ذات واجهة برمجيّة سهلة الاستخدام.

قوالب ملفات التصريحات

يوجد في هذا القسم قائمة بملفّات تصريحاتٍ ستساعدك كبدايةٍ لكتابة ملفّاتك الخاصّة؛ للاستفادة من هذا القسم، انظر صفحة هياكل المكتبات للتعرف على الملفّ الذي يجب عليك استخدامه.

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

يشرح هذا القسم الطريقتان الرئيسيتان لنشر ملفات تصريحاتك التي أنشأتها على منصة npm وهما: تجميعه (bundling) مع حزمة npm الخاصة بك، أو نشره على منظمة ‎@types‎‎ على npm.

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

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

إعدادات المشروع

tsconfig.json

وجود ملفٍّ باسم ‎tsconfig.json‎ في مجلّدٍ ما إشارةٌ إلى أنّ المجلّد هو جذر (root) مشروع TypeScript. يُحدِّد الملفّ ‎tsconfig.json‎ الملفات الجذر (root files) وخيارات الترجمة المطلوبة لترجمة المشروع.

خيارات المترجم

يوضح هذا القسم جميع الخيارات التي يمكن استعمالها مع مترجم TypeScript للتحكم بسير عمله والتعديل على سلوكه أثناء ترجمة الشيفرات. 

ضبط خيارات المترجم في مشاريع MSBuild

يشرح هذا القسم كيفية تحديد خيارات المترجم وضبطها عبر استخدام خاصيات MSBuild في مشروع MSBuild.

استعمال أدوات البناء مع TypeScript

يوضّح هذا القسم كيفيّة استخدام أدوات البناء (Build tools) المشهورة مع شيفرة TypeScript.

البناءات الليليّة

يُنشَر بناء ليليّ (nightly build) من فرع ‎master‎ في مستودع TypeScript كل منتصف ليلٍ بتوقيت PST إلى NPM و NuGet. هذا القسم يشرح كيفية الحصول على هذا البناء وكيفية الاعتماد عليه مع أدواتك.

مصادر