الفرق بين المراجعتين ل"TypeScript"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
(18 مراجعة متوسطة بواسطة 4 مستخدمين غير معروضة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:TypeScript}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:TypeScript}}</noinclude>
 
لغة TypeScript لغة برمجة مفتوحة المصدر من تطوير شركة Microsoft، تُعدّ امتدادًا وتوسعةً للغة JavaScript، حيث أضافت العديد من المزايا إليها، خاصّة دعم الأنواع (types) الذي يُساعد على تجنّب الأخطاء والعلل البرمجيّة وتوفير شيفرة برمجية نقية قابلة للقراءة أكثر من شيفرة JavaScript العادية.
 
لغة TypeScript لغة برمجة مفتوحة المصدر من تطوير شركة Microsoft، تُعدّ امتدادًا وتوسعةً للغة JavaScript، حيث أضافت العديد من المزايا إليها، خاصّة دعم الأنواع (types) الذي يُساعد على تجنّب الأخطاء والعلل البرمجيّة وتوفير شيفرة برمجية نقية قابلة للقراءة أكثر من شيفرة JavaScript العادية.
==[[TypeScript/Guide|مدخل إلى TypeScript]]==
+
{{Course|course=javascript}}
تعرف على أساسيات اللغة وكيفية استخدامها في تطبيق JavaScript الخاص بك.
+
__TOC__
==[[TypeScript/basic_types|الأنواع الأساسية]]==
+
==لغة TypeScript==
أنواع البيانات الأساسية في لغة TypeScript.
+
===[[TypeScript/Guide|مدخل إلى TypeScript]]===
==[[TypeScript/variable_declarations|تعريف المتغيّرات]]==
+
تعرَّف على أساسيات اللغة وكيفية استخدامها في تطبيق JavaScript الخاص بك.
==[[TypeScript/interfaces|الواجهات (interfaces)]]==
+
===[[TypeScript/basic_types|الأنواع الأساسية]]===
==[[TypeScript/classes|الأصناف (classes)]]==
+
ستجد في هذا القسم شرحًا وافيًا حول أنواع البيانات الأساسية في لغة TypeScript.
==[[TypeScript/functions|الدوال (functions)]]==
+
===[[TypeScript/variable_declarations|التصريح عن المتغيّرات]]===
==[[TypeScript/generics|الأنواع المُعمَّمة (generics)]]==
+
يشرح هذا القسم كيفية التصريح عن جميع أنواع المتغيرات (Variable Declarations) والثوابت باستعمال <code>var</code> و <code>let</code> و <code>const</code>. يتطرق أيضًا إلى شرح كيفية تفكيك ونشر المصفوفات والكائنات عند التصريح عن المغيرات.
==[[TypeScript/enums|الثوابت المتعددة]]==
+
 
==[[TypeScript/type_inference|استنتاج الأنواع]]==
+
===[[TypeScript/interfaces|الواجهات]]===
==[[TypeScript/type_compatibility|توافقية الأنواع]]==
+
تركيز التحقق من الأنواع (type-checking) على شكل قيم من مبادئ TypeScript الأساسية. يُصطلَح عليه أحيانًا بالتعبير duck typing أو التحقق من الأنواع الفرعيّة هيكليًّا (structural subtyping). تعمل الواجهات (interfaces) في TypeScript على تسمية هذه الأنواع، وهي طريقة قويّة لتعريف عقود (contracts) داخل شيفرتك أو عقود مع شيفرةٍ خارج مشروعك.
==[[TypeScript/advanced_types|أنواع متقدمة]]==
+
 
==[[TypeScript/symbols|الرموز]]==
+
===[[TypeScript/classes|الأصناف]]===
==[[TypeScript/iterators_and_generators|المكررات (iterators) والمولدات (generators)]]==
+
بدءًا من الإصدار ECMAScript 2015 المعروف كذلك بالإصدار ECMAScript 6، يُمكن لمبرمجي JavaScript بناء التطبيقات باستخدام البرمجة كائنيّة التوجّه المعتمِدة على الأصناف (classes). وتسمح TypeScript للمطورين باستعمال هذه التقنيات الآن، وتُترجِمها إلى لغة JavaScript تعمل على جميع المنصات المتصفحات المعروفة، دون الحاجة إلى انتظار دعم النسخة التالية من JavaScript.
==[[TypeScript/modules|الوحدات (modules)]]==
+
 
==[[TypeScript/namespaces|مجالات الأسماء (namespaces)]]==
+
===[[TypeScript/functions|الدوال]]===
==[[TypeScript/namespaces_and_modules|مجالات الأسماء والوحدات]]==
+
تلعب الدوال (functions) الدور الرئيس في وصف كيفيّة القيام بالأمور. يشرح هذا القسم الدوال في TypeScript وأنواعها وكيفية تعريفها والمعاملات المُمرَّرة إليها. يعرِّج أيضًا على شرح الكلمة <code>this</code> المفتاحية والدوال السهمية. 
==[[TypeScript/module_resolution|البحث عن الوحدات]]==
+
 
==[[TypeScript/declaration_merging|دمج التصريحات (Declaration Merging)]]==
+
===[[TypeScript/generics|الأنواع المُعمَّمة]]===
==[[TypeScript/jsx|JSX]]==
+
الأنواع المُعمّمة (generics) من الأدوات الرئيسية التي تُساعد على بناء مكوّنات قابلة لإعادة الاستعمال في لغات مثل C#‎ وJava، إذ تُعطي القُدرة على إنشاء مكوّنات يُمكن لها العمل مع عدّة أنواعٍ من البيانات عوضًا عن نوع واحد فقط. ما يسمح للمستخدمين بالاعتماد على هذه المكونات واستعمال الأنواع الخاصة بهم.
 +
 
 +
===[[TypeScript/enums|الثوابت المتعددة]]===
 +
تسمح الثوابت المتعدّدة بتعريف مجموعة مُسمّاةٍ من الثوابت، إذ يُسهّل استخدام الثوابت المتعدّدة توضيحَ نية استعمال الشيفرة أو إنشاء مجموعة حالات مختلفة. تُوفّر TypeScript كلا من الثوابت المتعددة المعتمِدة على الأعداد وتلك المُعتمِدة على السلاسل النصية كذلك.
 +
 
 +
===[[TypeScript/type_inference|استنتاج الأنواع]]===
 +
سيغطّي هذا القسم آلية استنتاج الأنواع في TypeScript، خاصّةً أين وكيف تُستنتَج الأنواع.
 +
 
 +
===[[TypeScript/type_compatibility|توافقية الأنواع]]===
 +
توافقيّة الأنواع في TypeScript مبنيّةٌ على التحقق من الأنواع الفرعيّة هيكليًّا (structural subtyping). والتحقّق من الأنواع هيكليًّا طريقةٌ للربط بين الأنواع حسب عناصرها فقط لا غير. وهذا مُعاكسٌ للتحقق من الأنواع اسميًّا (nominal typing).
 +
 
 +
===[[TypeScript/advanced_types|أنواع متقدمة]] ===
 +
تدعم TypeScript أنواعًا متقدمةً من البيانات يمكن استعمالها في شيفرتك. من هذه الأنواع: أنواع التقاطع والاتحاد والتمييز والقيم الفارغة ...إلخ. توفر أيضًا حرّاس الأنواع التي تستعمل لأداء عدة وظائف منها التخلص من أنواع محددة مثل النوع <code>null</code>. توفِّر أيضًا ميّزة الأنواع الشرطيّة التي تسمح لنا بالتعبير عن اقترانات أنواع غير موحّدة.
 +
 
 +
===[[TypeScript/symbols|الرموز]]===
 +
هي نوعٌ أوليّ مثل النوع ‎<code>number‎</code> والنوع ‎<code>string‎</code> وهي فريدة وغير قابلة للتعديل. يُمكن استخدام الرموز كمفاتيح لخاصيات الكائنات كما السلاسل النصيّة، ويُمكن كذلك مزجها مع تصريحات الخاصيات المحسوبة عن خاصيات الكائنات وعناصر الأصناف.
 +
 
 +
===[[TypeScript/iterators_and_generators|المكررات (iterators) والمولدات (generators)]]===
 +
طريقة التعامل مع المكرِّرات في TypeScript، وجملة <code>for..of</code>.
 +
 
 +
===[[TypeScript/modules|الوحدات]]===
 +
أضافت نسخة ECMAScript 2015 مبدأ الوحدات (modules) إلى لغة JavaScript، وهذا المبدأ موجود كذلك في لغة TypeScript. تُنفَّذ الوحدات داخل مجالها (scope) الخاص وليس في المجال العام (global scope)؛ هذا يعني بأنّ المتغيّرات، والدوال، والأصناف وغيرها من الكائنات المعرفة في وحدةٍ لا تكون مرئيّةً خارج الوحدة إلا في حالة صُدِّرَت صراحةً وبوضوح. في المقابل، إذا أردت استخدام متغير أو دالة أو صنف أو واجهة أو غير ذلك ممّا صُدِّر من طرف وحدة أخرى، فلا بد لك أن تَسْتَورِدَها.
 +
 
 +
===[[TypeScript/namespaces|مجالات الأسماء]]===
 +
يشرح هذا القسم كيفيّة تنظيم شيفرتك باستخدام مجالات الأسماء (namespaces) في لغة TypeScript.
 +
 
 +
===[[TypeScript/namespaces_and_modules|مجالات الأسماء والوحدات]]===
 +
تُوضِّح هذه الصّفحة الأساليب التي يُمكن بها تنظيم الشيفرة باستخدام مجالات الأسماء والوحدات في TypeScript. سيغطّي هذا القسم بعض المواضيع المتقدّمة في آليّة استخدام مجالات الأسماء والوحدات، وسيتطرّق إلى بعض الأخطاء الشائعة التي يقع فيها من يستخدم هذين الأسلوبين في TypeScript.
 +
 
 +
===[[TypeScript/module_resolution|تقرير الوحدات]]===
 +
تقريرُ (أو حلُّ) الوحداتِ (Module resolution) هي العمليّة التي يعتمد عليها المترجم (compiler) لاكتشاف ما يُشير إليه استيرادٌ (import) معيّن. تتطلّب قراءة هذا القسم فهمًا عامًّا للوحدات، لذا انظر <nowiki/>[[TypeScript/modules|توثيق الوحدات]] للاستزادة قبل البدء بقراءته.
 +
 
 +
===[[TypeScript/declaration_merging|دمج التصريحات]]===
 +
مبدأ دمج التصريحات (declaration merging) من المزايا التي تنفرد بها TypeScript. تصِف بعض المبادئ الفريدة الموجودة في لغة TypeScript شكل كائنات JavaScript على مستوى الأنواع. سيُساعد فهم هذا المبدأ على العمل مع شيفرة JavaScript الموجودة مسبقًا. إضافة إلى أنّها توفّر قدرة على إعمال مبادئ تجريد (abstraction concepts) أكثر تقدّمًا.
 +
 
 +
===[[TypeScript/jsx|JSX]]===
 +
JSX بنيةٌ (syntax) مشابهةٌ للغة XML يُمكن تضمينها وتحويلها إلى شيفرة JavaScript صالحة، لكن آلية عملية التحويل تختلف من تطبيق (implementation) إلى آخر. اشتهرت JSX باستخدامها مع مكتبة React، لكنها تملك تطبيقات أخرى غير React. تدعم لغة TypeScript تضمين JSX، وتدقيق الأنواع فيها، وكذا ترجمة JSX إلى JavaScript مباشرةً.
 +
 
 +
===[[TypeScript/decorators|المزخرفات]]===
 +
مع إضافة الأصناف إلى TypeScript ونسخة ES6، فقد ظهرت كذلك حاجةٌ إلى ميزات إضافية لدعم تعديل الأصناف وعناصر الأصناف أو توصيفها (annotating). توفّر المزخرفات (Decorators) طريقة لإضافة توصيفات وبنية برمجة وصفيّة (meta-programming) لتصريحات الأصناف وعناصرها. المزخرفات حاليًّا [https://github.com/tc39/proposal-decorators اقتراح في المرحلة 2] (stage 2 proposal) في JavaScript وهي متوفّرة كميّزة تجريبيّة في TypeScript.
 +
 
 +
===[[TypeScript/mixins|المخاليط]]===
 +
إضافةً إلى تسلسلات البرمجة كائنية التوجه التقليدية، هناك كذلك طريقة شائعة لبناء أصناف من مكونات قابلة لإعادة الاستعمال، وهي بناؤها عبر دمج أصناف جزئية أبسط. قد تكون فكرة المخاليط (mixins) أو السمات (traits) في لغات مثل Scala مألوفة بالنسبة إليك، وقد أصبح نمط المخاليط مشهورًا في مجتمع JavaScript كذلك.
 +
 
 +
===[[TypeScript/triple_slash_directives|تعليمات الشرطات المائلة الثلاث]]===
 +
تعليمات الشرطات المائلة الثلاث (Triple-slash directives) هي تعليقات تكتب في سطر واحد تحتوي على وسم XML واحد. تُستخدَم محتويات التعليق كتعليمات (إرشادات) للمترجم.
 +
 
 +
===[[TypeScript/type_checking_javascript_files|التحقق من الأنواع في ملفات JavaScript]]===
 +
أصبحت TypeScript منذ النسخة 2.3 تدعم التحقق من الأنواع والإبلاغ عن الأخطاء في ملفّات ‎<code>.js</code>‎ مع خيار المترجم ‎<code>--checkJs</code>‎.
 +
 
 +
==ملفات التعريفات==
 +
===[[TypeScript/declaration_files/introduction|مدخل إلى ملفات التصريحات (Declaration Files)]]===
 +
هذا القسم مصمَّم لإرشادك إلى كيفيّة كتابة ملفّات تصريحاتٍ (Declaration Files) عاليّة الجودة في TypeScript. يفترض هذا القسم أنّ لك معرفةً بأساسيّات لغة TypeScript. اقرأ توثيق لغة TypeScript في الأعلى لتفهم مبادئ اللغة الأساسيّة، خاصّة [[TypeScript/basic types|الأنواع]] و<nowiki/>[[TypeScript/namespaces|مجالات الأسماء]].
 +
 
 +
===[[TypeScript/declaration_files/library_structures|هياكل المكتبات]]===
 +
طريقة هيكلة ملفّ التصريحات الخاص بك تعتمد عمومًا على كيفيّة اعتماد المستخدمين على المكتبة. هناك عدّة طرق يُمكن بها توفير المكتبة ليستخدمها الآخرون في JavaScript. وستحتاج إلى كتابة ملفّ تصريحاتٍ ملائم حسب هيكل المكتبة التي ترغب بكتابة ملفّ تصريحات لها. يغطي هذا القسم كيفيّة التعرّف على أنماط المكتبات الشائعة، وكيفيّة كتابة ملف تصريحاتٍ مناسب لنمط المكتبة.
 +
 
 +
===[[TypeScript/declaration_files/by_example|ملفات التصريحات اعتمادًا على الأمثلة]]===
 +
الهدف من هذا القسم هو تعليمك كيفيّة كتابة ملف تعريف عالي الجودة. هذا القسم يريك أولًا توثيق واجهة برمجية (API) معيّنة مع طريقة استعمالها، ثم يشرح كيفية كتابة التصريح الملائم.
 +
 
 +
===[[TypeScript/declaration_files/do_s_and_don_ts|افعل ولا تفعل]]===
 +
يعطيك هذا القسم العديد من النصائح والتنبيهات المفيدة والأخطاء الشائعة التي ستحتاج إليها لكتابة شيفرة نقية ونظيفة وفعَّالة باستعمال لغة TypeScript.
 +
 
 +
===[[TypeScript/declaration_files/deep_dive|التعمق في ملفات التصريحات]]===
 +
دليلك لكتابة ملفّات تعريفات معقّدة ذات واجهة برمجيّة سهلة الاستخدام.
 +
 
 +
===[[TypeScript/declaration_files/templates|قوالب ملفات التصريحات]]===
 +
يوجد في هذا القسم قائمة بملفّات تصريحاتٍ ستساعدك كبدايةٍ لكتابة ملفّاتك الخاصّة؛ للاستفادة من هذا القسم، انظر صفحة <nowiki/>[[TypeScript/declaration files/library structures|هياكل المكتبات]] للتعرف على الملفّ الذي يجب عليك استخدامه.
 +
===[[TypeScript/declaration_files/publishing|نشر ملفات التصريحات]]===
 +
يشرح هذا القسم الطريقتان الرئيسيتان لنشر ملفات تصريحاتك التي أنشأتها على منصة npm وهما: تجميعه (bundling) مع حزمة npm الخاصة بك، أو نشره على [https://www.npmjs.com/~types منظمة Types] على npm.
 +
 
 +
===[[TypeScript/declaration_files/consumption|استخدام ملفات التصريحات]]===
 +
أصبح استخدام ملفات التصريحات سهلًا جدًّا منذ النسخة 2.0 من TypeScript، إذ أصبح الحصول عليها واستخدامها والعثور عليها أبسط من ذي قبل. سيساعدك هذا القسم على القيام بهذه العمليات الثلاث.
 +
 
 +
==إعدادات المشروع==
 +
===[[TypeScript/tsconfig.json|tsconfig.json]]===
 +
وجود ملفٍّ باسم ‎tsconfig.json‎ في مجلّدٍ ما إشارةٌ إلى أنّ المجلّد هو جذر (root) مشروع TypeScript. يُحدِّد الملفّ ‎tsconfig.json‎ الملفات الجذر (root files) وخيارات الترجمة المطلوبة لترجمة المشروع.
 +
 
 +
===[[TypeScript/compiler_options|خيارات المترجم]]===
 +
يوضح هذا القسم جميع الخيارات التي يمكن استعمالها مع مترجم TypeScript للتحكم بسير عمله والتعديل على سلوكه أثناء ترجمة الشيفرات. 
 +
 
 +
===[[TypeScript/compiler_options_in_msbuild|ضبط خيارات المترجم في مشاريع MSBuild]]===
 +
يشرح هذا القسم كيفية تحديد خيارات المترجم وضبطها عبر استخدام خاصيات MSBuild في مشروع MSBuild.
 +
 
 +
===[[TypeScript/integrating_with_build_tools|استعمال أدوات البناء مع TypeScript]]===
 +
يوضّح هذا القسم كيفيّة استخدام أدوات البناء (Build tools) المشهورة مع شيفرة TypeScript.
 +
 
 +
===[[TypeScript/nightly_builds|البناءات الليليّة]]===
 +
يُنشَر بناء ليليّ (nightly build) من [https://github.com/Microsoft/TypeScript/tree/master فرع ‎master‎] في مستودع TypeScript كل منتصف ليلٍ بتوقيت PST إلى NPM و NuGet. هذا القسم يشرح كيفية الحصول على هذا البناء وكيفية الاعتماد عليه مع أدواتك.
  
==[[TypeScript/decorators|المزخرفات (decorators)]]==
 
==[[TypeScript/mixins|المخاليط (mixins)]]==
 
==[[TypeScript/triple_slash_directives|تعليمات الشرطات المائلة الثلاث (Triple_Slash Directives)]]==
 
==[[TypeScript/type_checking_javascript_files|التحقق من الأنواع في ملفات JavaScript]]==
 
 
== مصادر ==
 
== مصادر ==
 
* [https://www.typescriptlang.org/docs/home.html توثيق TypeScript الرسمي.]
 
* [https://www.typescriptlang.org/docs/home.html توثيق TypeScript الرسمي.]
 
[[تصنيف:TypeScript]]
 
[[تصنيف:TypeScript]]
 +
{{#seo:
 +
description=شرح TypeScript باللغة العربية مدعّم بالأمثلة ضمن توثيق موسوعة حسوب الكامل وعالي الجودة لمختلف لغات البرمجة وتقنيات الويب والجوال.
 +
}}

المراجعة الحالية بتاريخ 08:11، 12 أغسطس 2023

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

دورة تطوير التطبيقات باستخدام لغة JavaScript
  • 55 ساعة فيديو تدريبية
  • من الصفر دون الحاجة لخبرة مسبقة
  • شهادة معتمدة من أكاديمية حسوب
  • متابعة أثناء الدورة من فريق مختص

لغة 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. هذا القسم يشرح كيفية الحصول على هذا البناء وكيفية الاعتماد عليه مع أدواتك.

مصادر