نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

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

يوضح الجدول التالي جميع الخيارات التي يمكن استعمالها مع مترجم TypeScript للتحكم بسير عمله والتعديل على سلوكه أثناء ترجمة الشيفرات. الخيار النوع القيمة الافتراضية الوصف ‎--allowJs‎ ‎boolean‎ ‎false‎ السماح بترجمة ملفّات JavaScript. ‎--allowSyntheticDefaultImports‎ ‎boolean‎ ‎module === "system" ‎ أو أنّ الخيار ‎--esModuleInterop‎ مضبوط وقيمة ‎module‎ ليست ‎es2015‎ أو ‎esnext‎ السماح للاستيرادات الافتراضية من الوحدات التي لا تحتوي على تصديرات افتراضيّة. هذا لا يؤثر على الشيفرة المولَّدة، ويؤثر فقط على آلية التحقق من الأنواع. ‎--allowUnreachableCode‎ ‎boolean‎ ‎false‎ لا تُخبِر عن الأخطاء ...

RegExp.prototype.flags

الخاصية RegExp.prototype.flags تُعيد سلسلةً نصيةً تحتوي على الرايات المستخدمة في كائن التعابير النمطية سمات الخاصية RegExp.prototype.flags قابلة للكتابة لا قابلة للإحصاء لا قابلة للضبط نعم الوصف ستُرتَّب الرايات المعادة من الخاصية flags ترتيبًا هجائيًا (من اليسار إلى اليمين). مثلًا: "gimuy". أمثلة مثال عن استخدام الخاصية flags للحصول على الرايات المستخدمة في التعبير النمطي: /foo/ig.flags; // "gi" /bar/myu.flags; // "muy" تعويض دعم المتصفحات أُضيفَت هذه الخاصية في مواصفة ECMAScript 2015 (أي ES6)، وما زالت غير مدعومةٍ في جميع المتصفحات. ...

Object.getPrototypeOf()‎

الدالة Object.getPrototypeOf()‎ تُعيد كائن prototype (أي قيمة الخاصية الداخلية [[Prototype]]) للكائن المُحدَّد. البنية العامة Object.getPrototypeOf(obj) obj الكائن الذي نريد الحصول على كائن prototype التابع له. القيمة المعادة كائن prototype للكائن المعطي، وإن لم تكن هنالك خاصياتٌ موروثة فستُعاد القيمة null. الوصف لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي إلى رمي TypeError، لكن بدءًا من ECMAScript 2015 (أي ES6) فستُعامل الوسائط التي لا تُمثِّل كائنات على أنها كائنات: Object.getPrototypeOf('foo'); // TypeError: ...

Array.prototype.copyWithin()‎

الدالة Array.prototype.copyWithin()‎ تنسخ جزءًا من المصفوفة إلى مكانٍ آخر فيها نسخًا سطحيًا، وتُعيد هذا الجزء دون تعديل طول المصفوفة. ['alpha', 'bravo', 'charlie', 'delta'].copyWithin(2, 0); // ["alpha", "bravo", "alpha", "bravo"] البنية العامة arr.copyWithin(target[, start[, end]]) target الفهرس (العد يبدأ من الصفر) الذي ستوضع العناصر المنسوخة فيه، وإذا كانت هذه القيمة سالبةً فسيبدأ العد من النهاية. إذا كانت قيمة هذا الوسيط تساوي أو أكبر من arr.length، فلن يُنسَخ أيّ عنصر، وإذا كانت هذه القيمة أكبر من start، فسيُقتَطَع الجزء المنسوخ ليتسع في arr.length. ...

Array.of()‎

الدالة Array.of()‎ تُنشِئ مصفوفةً جديدةً تحتوي على القيم المُمرَّرة إليها، بغض النظر عن عدد أو نوع تلك الوسائط. الفرق بين الدالة Array.of()‎ والدالة البانية Array هو طريقة التعامل مع الوسائط الرقمية، فالدالة Array.of(7)‎ ستُنشِئ مصفوفةً لها عنصرٌ وحيدٌ وهو 7، بينما الدالة البانية Array(7)‎ ستُنشِئ مصفوفةً فارغةً طولها (length) هو 7 (لاحظ أنَّ هذا يعني أنَّ للمصفوفة سبع خانات فارغة، لكنها لا تحتوي على القيمة undefined). Array.of(7); // [7] Array.of(1, 2, 3); // [1, ...

المصطلحات في React

التطبيق وحيد الصفحة التطبيق وحيد الصفحة (Single-page Application) هو التطبيق الذي يُحمِّل صفحة HTML واحدة وكل ملحقاتها الضرورية (مثل CSS و JavaScript) المطلوبة لكي يعمل التطبيق. لا تتطلّب أيّة تفاعلات مع الصفحة أو الصفحات اللاحقة أي عودة للخادم مرّة أخرى، ممّا يعني عدم إعادة تحميل الصفحة. بالرغم من قدرتك على بناء تطبيق وحيد الصفحة في React فهو ليس أمرًا ضروريًّا. يُمكِن أيضًا استخدام React لتحسين أجزاء صغيرة من الموقع مع الحصول على تفاعليّة أكبر. يُمكِن للشيفرة المكتوبة باستخدام React أن ...

Object.isExtensible()‎

الدالة Object.isExtensible()‎ تُحدِّد إن كان أحد الكائنات قابلًا للتوسعة (أي يمكن إضافة خاصيات جديدة إليه). البنية العامة Object.isExtensible(obj) obj الكائن الذي نريد التحقق منه. القيمة المعادة قيمة منطقية (Boolean) تبيّن إذا كان الكائن قابلًا للتوسعة أم لا. الوصف يمكن توسعة الكائنات افتراضيًا، أي يمكن إضافة خاصيات جديدة إليها، لكن يمكن جعل العنصر غير قابلٍ للتوسعة باستخدام الدالة Object.preventExtensions()‎ أو Object.seal()‎ أو Object.freeze()‎. لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي ...

التصيير السطحي (Shallow Rendering) في React

الاستيراد import ShallowRenderer from 'react-test-renderer/shallow'; // ES6 var ShallowRenderer = require('react-test-renderer/shallow'); // ES5 with npm لمحة عامة عند كتابة وحدات اختبار لمكتبة React يكون التصيير السطحي مفيدًا لك. يُتيح لك التصيير السطحي تصيير مكوّن على عمق مستوى واحد وتوضيح الحقائق حول ما يُعيده تابع التصيير، بدون القلق حول سلوك المكوّنات الأبناء والتي لم تُصيَّر أو ينشأ عنها نسخة. لا يحتاج ذلك إلى DOM. على سبيل المثال إن كان لديك المكوّن التالي: function MyComponent() { return ( <div> ...

Object.values()‎

الدالة Object.values()‎ تُعيد مصفوفةً للخاصيات القابلة للإحصاء والتابعة لأحد الكائنات مباشرةً، وبنفس الترتيب الذي توفِّره حلقة التكرار for...in (والفرق بين هذه الدالة وحلقة التكرار هو أنَّ حلقة التكرار for...in ستمرّ على الخاصيات القابلة للإحصاء والموجودة في سلسلة prototype، ولن تقتصر على الخاصيات التابعة للكائن مباشرةً). البنية العامة Object.values(obj) obj الكائن الذي نريد الحصول على قيم خاصياته القابلة للإحصاء. القيمة المعادة مصفوفة تُمثِّل قيم جميع الخاصيات القابلة للإحصاء والتابعة مباشرةً للكائن المعطي. الوصف لاحظ أنَّه في معيار ECMAScript 5 كان استعمال ...

String.fromCharCode()‎

الدالة String.fromCharCode()‎ الساكنة (static) تُعيد سلسلةً نصيةً مُنشَأةً باستخدام سلسلة من قيم محارف يونيكود. البنية العامة String.fromCharCode(num1[, ...[, numN]]) num1, ..., numN سلسلة من الأرقام التي تُمثِّل قيم محارف يونيكود (Unicode values). المجال المسموح يقع بين 0 و 65535 (أي 0xFFFF)، والأرقام الأكبر من 0xFFFF سيُقتَطع جزءٌ منها. القيمة المعادة سلسلة نصية تحتوي على محارف ترتبط بقيم يونيكود المُمرَّرة إلى الدالة. الوصف هذه الدالة تُعيد سلسلةً نصيةً أوليّةً ولا تُعيد كائن String. لمّا كانت الدالة fromCharCode هي دالةٌ ساكنة (static method) تابعةٌ ...

Object.isSealed()‎

الدالة Object.isSealed()‎ تُحدِّد إن كان أحد الكائنات مختومًا (sealed). البنية العامة Object.isSealed(obj) obj الكائن الذي نريد التحقق منه. القيمة المعادة قيمة منطقية (Boolean) تبيّن إذا كان الكائن مختومًا أم لا. الوصف يكون الكائن مختومًا إذا لم يكن قابلًا للتوسعة، وكانت جميع خاصياته غير قابلة للضبط (non-configurable)، أي لا يمكن حذفها، لكن ليس ضروريًا أن تكون غير قابلة للكتابة. لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) سيؤدي إلى رمي TypeError، لكن ...

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

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

Object.preventExtensions()‎

الدالة Object.preventExtensions()‎ تمنع إضافة خاصيات جديدة إلى الكائن. البنية العامة Object.preventExtensions(obj) obj الكائن الذي نريد منع إضافة خاصيات جديدة إليه. القيمة المعادة الكائن المعني لكن مع جعله لا يقبل خاصيات جديدة. الوصف يكون الكائن قابلًا للتوسعة إذا أمكن إضافة خاصيات جديدة إليه، والدالة Object.preventExtensions()‎ تجعل الكائن غير قابلٍ للتوسعة، أي أنَّه لن يقبل خاصيات جديدة لم تكن موجودةً فيه في وقت جعله غير قابلٍ للتوسعة. لاحظ أنَّه عمومًا تكون خاصيات الكائنات غير القابلة للتوسعة قابلةً للحذف (عبر المعامل delete)، لكن ...

Object.keys()‎

الدالة Object.keys()‎ تُعيد مصفوفةً للخاصيات القابلة للإحصاء والتابعة لأحد الكائنات مباشرةً، وبنفس الترتيب الذي توفِّره حلقة التكرار for...in (والفرق بين هذه الدالة وحلقة التكرار هو أنَّ حلقة التكرار for...in ستمرّ على الخاصيات القابلة للإحصاء والموجودة في سلسلة prototype، ولن تقتصر على الخاصيات التابعة للكائن مباشرةً). البنية العامة Object.keys(obj) obj الكائن الذي نريد الحصول على خاصياته القابلة للإحصاء. القيمة المعادة مصفوفة تُمثِّل جميع الخاصيات القابلة للإحصاء والتابعة مباشرةً للكائن المعطي. الوصف لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة ...

دالة getter في JavaScript

البنية get تؤدي إلى ربط خاصية من خاصيات الكائن بدالة التي ستستدعى عند محاولة الوصول إلى قيمة تلك الخاصية. البنية العامة {get prop() { ... } } {get [expression]() { ... } } prop اسم الخاصية الذي سترتبط بالدالة المعطية. expression بدءًا من ECMAScript 2015 (أي ES6)، يمكن استخدام التعابير لإنشاء أسماء محسوبة للخاصيات التي سترتبط بالدالة المعطية. الوصف يمكن أن تستخدم دالة getter في JavaScript لتنفيذ دالة معيّنة عندما تتم محاولة الوصول إلى خاصية من خاصيات الكائن بغية إعادة قيمة ...

مكونات الويب في React

إنّ مكوّنات React ومكوّنات الويب مبنية لحل مشاكل مختلفة. حيث تُزوِّدنا مكوّنات الويب بتغليف قوي لمكوّنات قابلة لإعادة الاستخدام، بينما تُزوِّدنا مكوّنات React بمكتبة تصريحات تُبقي DOM على تزامن مع بياناتنا. يكون هذا الهدفان متكاملين، وكمُطوّر لك حرية استخدام React في مكوّنات الويب لديك، أو استخدام مكوّنات الويب في React أو كليهما معًا. معظم من يستخدم React لا يستخدم مكوّنات الويب، ولكن قد ترغب في ذلك خاصة إذا كنت تستخدم مكوّنات لواجهة المستخدم من طرف ثالث والتي تكون مكتوبة باستخدام ...

المكونات غير المضبوطة في React

نُفضِّل في معظم الحالات استخدام المُكوّنات المضبوطة من أجل حقول الإدخال، ففي المُكوّنات المضبوطة يتعامل مُكوّن React مع بيانات الحقول. البديل لها هو المُكوّنات غير المضبوطة والتي يتعامل فيها DOM مع بيانات الحقول. لكتابة مُكوّن غير مضبوط بدلًا من كتابة معالج أحداث لكل تحديث للحالة، فبإمكانك استخدام المراجع للحصول على قيم الحقول من DOM. مثلًا تقبل هذه الشيفرة اسمًا واحدًا في المُكوّن غير المضبوط: class NameForm extends React.Component { constructor(props) { super(props); this.handleSubmit ...

دالة setter في JavaScript

البنية set تؤدي إلى ربط خاصية من خاصيات الكائن بدالة التي ستستدعى عند محاولة ضبط قيمة تلك الخاصية. البنية العامة {set prop(val) { . . . }} {set [expression](val) { . . . }} prop اسم الخاصية الذي سترتبط بالدالة المعطية. val اسم المتغير الذي سيحمل القيمة التي تتم محاولة إسنادها إلى الخاصية prop. expression بدءًا من ECMAScript 2015 (أي ES6)، يمكن استخدام التعابير لإنشاء أسماء محسوبة للخاصيات التي سترتبط بالدالة المعطية. الوصف يمكن أن تستخدم دالة setter في JavaScript لتنفيذ ...

Object.seal()‎

الدالة Object.seal()‎ تجعل الكائن مختومًا، مما يمنع إضافة خاصيات جديدة إليه، ويجعل جميع الخاصيات الموجودة مسبقًا فيه غيرَ قابلةٍ للضبط (non-configurable)؛ لكن ما يزال بالإمكان تعديل قيم الخاصيات الموجودة لطالما كانت قابلةً للكتابة (writable). البنية العامة Object.seal(obj) obj الكائن الذي نريد جعله مختومًا. القيمة المعادة الكائن المعني لكن مع جعله مختومًا. الوصف افتراضيًا، تكون الكائنات قابلةً للتوسعة (extensible، أي يمكن إضافة خاصيات جديدة إليها)، وجعل الكائن مختومًا يمنع إضافة خاصيات جديدة ويجعل جميع الخاصيات الموجودة غير قابلةٍ للضبط؛ وهذا يمكِّن ...

البنية المختصرة لتعريف الدوال في JavaScript

بدءًا من ECMAScript 2015 (أي ES6)، يمكن تعريف الدوال التابعة للكائن بطريقة مختصرة عند تهيئة الكائنات. البنية العامة var obj = { property( parameters… ) {}, *generator( parameters… ) {}, async property( parameters… ) {}, async* generator( parameters… ) {}, // مع مفاتيح محسوبة [property]( parameters… ) {}, *[generator]( parameters… ) {}, async [property]( parameters… ) {}, // قارن مع شكل getter/setter get property() {}, set property(value) {} }; الوصف ...

Array.prototype.includes()‎

الدالة Array.prototype.includes()‎ تُحدِّد إن كانت المصفوفة تحتوي على عنصر معيّن، وتُعيد true أو false. var array1 = [1, 2, 3]; console.log(array1.includes(2)); // true var pets = ['cat', 'dog', 'bat']; console.log(pets.includes('cat')); // true console.log(pets.includes('at')); // false البنية العامة arr.includes(searchElement[, fromIndex]) searchElement العنصر الذي نريد البحث عنه. fromIndex الفهرس الذي نريد البدء منه في البحث عن searchElement، والقيم السالبة ستؤدي إلى بدء البحث من الفهرس array.length + fromIndex تصاعديًا. القيمة الافتراضية هي 0. القيمة المعادة قيمة منطقية (Boolean). أمثلة أمثلة بسيطة عن الدالة includes [1, 2, ...

Object.isFrozen()‎

الدالة Object.isFrozen()‎ تُحدِّد إن كان أحد الكائنات مُجمَّدًا. البنية العامة Object.isFrozen(obj) obj الكائن الذي نريد التحقق منه. القيمة المعادة قيمة منطقية (Boolean) تبيّن إذا كان الكائن مجمَّدًا أم لا. الوصف يكون الكائن مجمدًا إذا لم يكن قابلًا للتوسعة، وكانت جميع خاصياته غير قابلة للضبط (non-configurable)، وكانت جميع خاصيات البيانات (data properties، أي الخاصيات التي ليست دوال getter و setter) غير قابلة للكتابة (non-writable). لاحظ أنَّه في معيار ECMAScript 5 كان استعمال هذه الدالة على وسيطٍ ليس كائنًا (أي قيمةً أوليةً) ...

String.fromCodePoint()‎

الدالة String.fromCodePoint()‎ الساكنة (static) تُعيد سلسلةً نصيةً مُنشَأةً باستخدام سلسلة من قيم المحارف (code points). البنية العامة String.fromCodePoint(num1[, ...[, numN]]) num1, ..., numN سلسلة من الأرقام التي تُمثِّل قيم المحارف (code points). القيمة المعادة سلسلة نصية تحتوي على محارف ترتبط بقيم المحارف المُمرَّرة إلى الدالة. الاستثناءات سيرمى الاستثناء RangeError إذا مُرِّرَ قيمة محرف يونيكود غير صالحة (مثلًا: "RangeError: NaN is not a valid code point"). الوصف هذه الدالة تُعيد سلسلةً نصيةً أوليّةً ولا تُعيد كائن String. لمّا كانت الدالة fromCodePoint هي دالةٌ ...

Array.prototype.fill()‎

الدالة Array.prototype.fill()‎ تملأ جميع عناصر المصفوفة من فهرس البداية حتى فهرس النهاية بقيمة ثابتة. var numbers = [1, 2, 3] numbers.fill(1); // [1, 1, 1] البنية العامة arr.fill(value[, start[, end]]) value القيمة التي نريد ملء المصفوفة بها. start فهرس البداية، وقيمته الافتراضية هي 0. end فهرس النهاية، وقيمته الافتراضية هي this.length. القيمة المعادة المصفوفة المُعدَّلة. الوصف الدالة fill تستطيع أن تقبل ثلاثة وسائط هي value و start و end، الوسيطان start و end هما وسيطان اختياريان يأخذان القيم الافتراضية 0 و length ...

Object.getOwnPropertyDescriptor()‎

الدالة Object.getOwnPropertyDescriptor()‎ تُعيد واصف إحدى الخاصيات التابعة لكائنٍ ما مباشرةً (أي أنها معرَّفة في الكائن نفسه، وليس في سلسلة prototype). البنية العامة Object.getOwnPropertyDescriptor(obj, prop) obj الكائن الذي نريد الحصول على واصف إحدى خاصياته. prop اسم الخاصية التي نريد الحصول على واصفها. القيمة المعادة واصف الخاصية (property descriptor) المعطاة إن كانت موجودةً في الكائن، أو القيمة undefined فيما عدا ذلك. الوصف تسمح لنا هذه الدالة بالحصول على الوصف الدقيق لإحدى خاصيات الكائن؛ وتتألف الخاصيات في JavaScript من سلسلة نصية تُشكِّل اسم ...

Object.getOwnPropertyNames()‎

الدالة Object.getOwnPropertyNames()‎ تُعيد مصفوفةً فيها جميع الخاصيات التابعة مباشرةً للكائن المعطي، بما في ذلك الخاصيات غير القابلة للإحصاء (non-enumerable) لكن باستثناء خاصيات الرموز Symbol. البنية العامة Object.getOwnPropertyNames(obj) obj الكائن الذي نريد الحصول على جميع خاصياته. القيمة المعادة مصفوفة فيها سلاسل نصية لأسماء جميع الخاصيات التابعة مباشرةً للكائن المعطي. الوصف الدالة Object.getOwnPropertyNames()‎ تُعيد مصفوفةً فيها جميع الخاصيات التابعة مباشرةً للكائن obj، وترتيب الخاصيات القابلة للإحصاء متوافقٌ مع الترتيب الذي تُظهِره حلقة التكرار for...in (أو الدالة Object.keys()‎)؛ أما ترتيب الخاصيات غير القابلة ...

Array.prototype.findIndex()‎

الدالة Array.prototype.findIndex()‎ تُعيد فهرس أوّل عنصر في المصفوفة الذي يُطابِق الشرط الموجود في دالة الاختبار؛ وإلا ستُعاد القيمة -1. var array1 = [5, 12, 8, 130, 44]; function findFirstLargeNumber(element) { return element > 13; } console.log(array1.findIndex(findFirstLargeNumber)); // 3 انظر أيضًا إلى صفحة الدالة find()‎ التي تُعيد قيمة العنصر الذي عُثِر عليه في المصفوفة بدلًا من فهرسه؛ أما إذا أردتَ معرفة موضع عنصر مُحدَّد فانظر إلى الدالة indexOf()‎، وإذا شئت تحديد إن كان العنصر موجودًا ضمن المصفوفة فاستعمل الدالة includes()‎. البنية العامة arr.findIndex(callback[, thisArg]) ...

Object.freeze()‎

الدالة Object.freeze()‎ تُجمِّد كائنًا، مما يمنع إضافة خاصيات جديدة إليه، ويمنع حذف الخاصيات الموجودة فيه، ويمنع تعديل قيمة أو قابلية إحصاء أو قابلية ضبط أو قابلية الكتابة التابعة لخاصياته؛ ويمنع أيضًا تعديل سلسلة prototype، وستُعيد هذه الدالة الكائن في الحالة «المُجمَّدة». البنية العامة Object.freeze(obj) obj الكائن الذي سيُجمَّد. القيمة المعادة الكائن المُجمَّد. الوصف لا يمكن إضافة أو حذف أيّ شيء من خاصيات الكائنات المجمّدة؛ وأي محاولة لفعل ذلك ستفشل إما بصمت أو سترمي الاستثناء TypeError (وسيرمى هذا الخطأ عادةً في ...

الدوال في JavaScript

على وجه العموم، الدالة هي «برنامجٌ فرعي» (subprogram) الذي يمكن استدعاؤه من شيفرة خارجية (أو داخلية، في حال أردنا استدعاء الدالة تعاوديًا [recursively])؛ وتحتوي الدالة على سلسلةٍ من التعابير البرمجية التي تسمى «جسم الدالة»، ويمكن تمرير قيم إلى الدالة، وتستطيع الدالة أن تعيد قيمةً ما. تُعدّ الدوال في JavaScript على أنَّها كائنات من الصنف الأول (first-class objects)، لأنها تملك خاصيات ودوال مثل بقية الكائنات، لكن ما يميّزها عن بقية الكائنات هو إمكانية استدعائها، إذ إنَّها كائنات من النوع Function. الوصف ...

Array.from()‎

الدالة Array.from()‎ تُنشِئ مصفوفة جديدة من كائن شبيه بالمصفوفات. البنية العامة Array.from(arrayLike[, mapFn[, thisArg]]) arrayLike الكائن الشبيه بالمصفوفات الذي نريد تحويله إلى مصفوفة. mapFn دالة الربط (map function) التي ستستدعى على كل عنصر من عناصر المصفوفة. thisArg القيمة التي ستستخدم في this عند استدعاء mapFn. القيمة المعادة مصفوفة جديدة. الوصف الدالة Array.from()‎ تسمح بإنشاء مصفوفات من كائنات شبيهة بالمصفوفات (array-like objects)، أي الكائنات التي لها الخاصية length وفيها عناصر مُفهرَسة. تملك الدالة Array.from()‎ وسيطًا اختياريًا باسم mapFn، الذي يسمح بتنفيذ ...

Array.prototype.filter()‎

الدالة Array.prototype.filter()‎ تُنشِئ مصفوفةً جديدةً فيها جميع العناصر التي حققت دالة الاختبار المُمرَّرة إلى هذه الدالة. var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(word => word.length > 6); console.log(result); // ["exuberant", "destruction", "present"] استخدام الدوال السهمية (ES6): const words = ["spray", "limit", "elite", "exuberant", "destruction", "present", "happy"]; let longWords = words.filter(word => word.length > 6); // ["exuberant", "destruction", "present"] البنية العامة var newArray = arr.filter(callback[, thisArg]) callback الدالة التي ستختبر كل عنصر من عناصر المصفوفة وستُعيد true إن أردنا الإبقاء ...

المعاملات الافتراضية للدوال في JavaScript

معاملات الدالة الافتراضية (default function parameters) تسمح بتهيئة معاملات الدالة مع قيم افتراضية إن لم تُمرَّر لها قيمة أثناء استدعاء الدالة أو كانت القيمة المُمرَّرة هي undefined. البنية العامة function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements } الوصف تكون قيمة المعاملات الافتراضية في JavaScript هي undefined، لكن في بعض الحالات يكون من المفيد ضبط قيمة تلك المعاملات إلى قيمةٍ أخرى، وهنا تلعب المعاملات الافتراضية دورها. في الماضي كانت الاستراتيجية العامة المتبعة لضبط قيم افتراضية ...

Object.create()‎

الدالة Object.create()‎ تُنشِئ كائنًا جديدًا له كائن prototype مُحدَّد، وتكون خاصياته معطية. البنية العامة Object.create(proto[, propertiesObject]) proto الكائن الذي يجب أن يُسنَد إلى خاصية prototype للكائن المُنشأ. propertiesObject هذا الوسيط اختياريٌ، وإذا حُدِّدَت قيمته ولم تكن undefined، فهو كائنٌ فيه خاصياتٌ تابعةٌ له وقابلةٌ للإحصاء تُحدِّد واصفات الخاصيات (property descriptors) التي ستُضاف إلى الكائن المُنشَأ والتي سترتبط بأسماء الخاصيات. وهذه الخاصيات تشبه الوسيط الثاني المُمرَّر إلى الدالة Object.defineProperties()‎ (ارجع إلى تلك الصفحة إن وجدتَ الكلام السابق غامضًا). القيمة المعادة كائن ...

Array.prototype.find()‎

الدالة Array.prototype.find()‎ تُعيد قيمة أوّل عنصر في المصفوفة الذي يُطابِق الشرط الموجود في دالة الاختبار؛ وإلا ستُعاد القيمة undefined. function isBigEnough(element) { return element >= 15; } [12, 5, 8, 130, 44].find(isBigEnough); // 130 انظر أيضًا إلى صفحة الدالة findIndex()‎ التي تُعيد فهرس العنصر الذي عُثِر عليه في المصفوفة بدلًا من قيمته؛ أما إذا أردتَ معرفة موضع عنصر مُحدَّد فانظر إلى الدالة indexOf()‎، وإذا شئت تحديد إن كان العنصر موجودًا ضمن المصفوفة فاستعمل الدالة includes()‎. البنية العامة arr.find(callback[, thisArg]) callback الدالة التي ...

مقدمة إلى JSX في React

فلننظر إلى تعريف هذا المتغير: const element = <h1>!أهلًا بالعالم</h1>; إنّ الصّياغة الغريبة السّابقة التي تحتوي على وسم هي ليست سلسلة نصيّة ولا حتى HTML. تُدعى الصّياغة السّابقة JSX وهي عبارة عن امتداد لصياغة JavaScript، نوصي باستخدامها مع React لوصف المظهر الذي ينبغي أن تكون عليه واجهة المستخدم. قد تُذكِّرك JSX بلغات القوالب، ولكنها تمتلك قوة JavaScript الكاملة. تُنتِج JSX عناصر React. سنستعرض إظهار هذه العناصر في DOM في قسم تصيير العناصر (Rendering Elements). سنتحدّث في الفقرات التالية عن أساسيّات JSX ...

JSX في TypeScript

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

نمط Strict

نمط Strict أتى في معيار ECMAScript 5 لإضافة «صرامة» في تطبيق شيفرات JavaScript، لاحظ أنَّ نمط strict لا يُشكِّل قسمًا فرعيًا من JavaScript، وإنما له بنية خاصة به تختلف عن الشيفرات العادية. فالمتصفحات التي لا تدعم نمط strict ستُشغِّل الشيفرات بطريقة مختلفة عن المتصفحات التي تدعمه، لذا لا تعتمد على نمط strict دون اختبار دعمه أولًا من المتصفح. نمط Strict يُضيف عددًا من التغييرات على بنية JavaScript، فلم تعد تسكت JavaScript عن الأخطاء وإنما أصبحت ترمي استثناءات عند حدوثها؛ ونمط ...

الوحدة URL في Node.js

توفر الوحدة url مجموعة من الأدوات لمعالجة وتحليل عناوين الويب (URL). يمكن استيراد الوحدة والبدء باستخدامها عبر تنفيذ: ‎‎const url = require('url'); سلاسل العناوين والكائِن URL سلسلة العنوان (URL String) هي سلسلة نصيّة مُنظمة مؤلَّفة من عدِّة مكوِّنات. يُعاد الكائِن URL، عند تحليل سلسلة العنوان، مقرونًا بخاصيّات تُمثِّل مكوِّنات سلسلة العنوان المُختلفة. توفر الوحدة url واجهتين برمجيّتين للتعامل مع عناوين الويب: واجهة قديمة خاصّة ببيئة Node.js، وأخرى جديدة تُطبِّق معيار WHATWG المُستخدَم في مُتصفحات الويب (سنستخدم عبارة "الواجهة الحديثة" للإشارة ...

المطابقة (Reconciliation) في React

تُزوّدنا React بواجهة برمجة تطبيقات (API) صريحة بحيث لا نقلق بشأن التغييرات التي تطرأ في كل تحديث. يجعل هذا من كتابة التطبيقات أمرًا أسهل بكثير، ولكن قد لا يكون من الواضح كثيرًا كيفيّة تطبيق هذا في React. تشرح هذه الصفحة الخيارات التي وضعناها في خوارزمية المقارنة (diffing) بحيث تكون تحديثات المُكوّنات متوقعة وفي نفس الوقت سريعة كفاية لأجل التطبيقات عالية الأداء. البداية عندما تستخدم React في نقطة زمنية محدّدة بإمكانك التفكير في التابع render()‎ كأنّه يُنشِئ شجرة من عناصر React، ...

الوحدة util‎ في Node.js

صُمِّمَت الوحدة util بشكل أساسي لتلبية احتياجات واجهات Node.js البرمجيّة الداخليّة. هذا لا يمنَع كون الأدوات، التي توفرها الوحدة، مفُيدةً للتطبيقات ولمطوري الوحدات البرمجيّة. يمكنك استيراد الوحدة والبدء باستخدامها عبر تنفيذ: const util = require('util'); util.callbackify(original)‎ أُضيف في الإصدار: v8.2.0. original‎:‏ <Function> دالة async‎ غير متزامنة. القيم المُعادة: <Function> دالةً من نمط دوال رد النداء (callback function). يأخُذ التابِع الدالة async (أو دالة تُعيد كاِئنًا من النوع Promise) ويعيد دالةً تتبع نمط دالة رد النداء «الخطأ أولًا» (error-first callback)، مثل ...

المزخرفات في TypeScript

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

الكائن RegExp في JavaScript

الكائن RegExp هو دالةٌ بانيةٌ تُنشِئ تعابير نمطيةً (regular expressions) لمُطابَقة النص مع نمط. البنية العامة يمكن أن تأخذ التعابير النمطية الشكل الآتي (الشكل المختصر، ثم الدالة البانية، ثم الدالة RegExp): /pattern/flags new RegExp(pattern[, flags]) RegExp(pattern[, flags]) pattern التعبير النمطي. flags إذا حُدِّدَت قيمة هذا الوسيط، فستحتوي على تجميعة من الرايات الآتية. g المطابقة في كامل السلسلة النصية، أي العثور على جميع المطابقات بدل التوقف عند أوّل مطابقة. i تجاهل حالة الأحرف. m تعدد الأسطر، أي معاملة محرف البداية والنهاية (أي ^ ...

الوحدة Stream

الاستقرار: 2-مستقر المجرى هو واجهة مجرّدة للعمل مع البيانات المتدفقة في Node.js. توفّر الوحدة stream واجهة برمجية (API) أساسية تجعل من السهل بناء كائنات تتعامل مع واجهة المجرى. يوجد العديد من كائنات المجرى التي توفرها Node.js. على سبيل المثال، http.IncomingMessage (طلبيات الخادم HTTP) و process.stdout هما نسخ من الصنف stream. يمكن أن تكون المجاري قابلة للقراءة (readable)، أو قابلة للكتابة (writable)، أو كليهما. كل المجاري هي نسخ من الصنف EventEmitter. يمكن الوصول إلى الوحدة stream باستخدام: const stream = require('stream'); لمَّا ...

الدليل التطبيقي

لا يفترض هذا الدليل أي معرفة مسبقة بمكتبة React. قبل أن نبدأ بالدليل التطبيقي سنبني لعبة صغيرة خلال هذا الدليل التطبيقي. ربّما قد ترغب بتخطي هذا الدليل لأنّك لا تريد بناء الألعاب، ولكن أعطيها فرصة. إنّ التقنيات التي ستتعلمها في هذا الدليل أساسيّة لبناء أي تطبيق React، وسيعطيك إتقانها فهمًا أعمق لمكتبة React. فائدة: هذا الدليل مُصمَّم للأشخاص الذين يُفضّلون التعلّم بالممارسة. إن كنت تُفضّل تعلّم المفاهيم من البداية فارجع إلى توثيق React من البداية خطوة بخطوة. قد تجد هذا ...

الوحدات في TypeScript

ملاحظة حول المصطلحات تغيّرت طريقة استخدام المصطلحات في النسخة TypeScript 1.5، إذ كانت مجالات الأسماء (namespaces) تُسمّى قديمًا بمصطلح "الوحدات الداخليّة (internal modules)"، وما كان يُسمّى بالوحدات الخارجيّة (External modules) أصبح يُسمّى ببساطة بمصطلح "الوحدات (modules)" وهو ما سنغطّيه في هذه الصفحة. ويجب استخدام الكلمة المفتاحية ‎namespace‎ في الأماكن التي كانت تُستخدَم فيها الكلمة المفتاحية ‎module‎ للتصريح عن وحدة داخليّة في النسخ التي سبقت TypeScript 1.5، أي أنّ عليك استخدام ‎namespace X {‎ عوضًا عن ‎module X {‎ (انظر صفحة ...