نتائج البحث
اذهب إلى التنقل
اذهب إلى البحث
المزخرفات في TypeScript
مقدمة مع إضافة الأصناف إلى TypeScript ونسخة ES6، فقد ظهرت كذلك حاجةٌ إلى ميزات إضافية لدعم تعديل الأصناف وعناصر الأصناف أو توصيفها (annotating). توفّر المزخرفات (Decorators) طريقة لإضافة توصيفات وبنية برمجة وصفيّة (meta-programming) لتصريحات الأصناف وعناصرها. المزخرفات حاليًّا اقتراح في المرحلة 2 (stage 2 proposal) في JavaScript وهي متوفّرة كميّزة تجريبيّة في TypeScript. ملاحظة: المزخرفات ميّزة تجريبيّة قد تتغيّر في النسخ الجديدة مستقبلًا. لتفعيل الدعم التجريبي للمزخرفات، عليك تفعيل خيار المترجم experimentalDecorators إما على سطر الأوامر أو في ملفّ tsconfig.json ...
الرموز في TypeScript
مقدمة أضافت النسخة ECMAScript 2015 من لغة JavaScript نوع بيانات أوليّ (primitive data type) جديد يُسمّى symbol، وهو نوعٌ أوليّ مثل النوع number والنوع string. انظر توثيق Symbol لتفصيل دقيق عن هذه الرموز. تنشأ القيم من النوع symbol عبر استدعاء الدالة البانية Symbol(): let sym1 = Symbol();
let sym2 = Symbol("key"); // مفتاح نصيّ اختياريّ
الرموز فريدة (unique) وغير قابلة للتعديل (immutable): let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, الرموز فريدة ولو أُنشِأت بنفس المفتاح
يُمكن استخدام ...
tsconfig.json في TypeScript
مقدمة وجود ملفٍّ باسم tsconfig.json في مجلّدٍ ما إشارةٌ إلى أنّ المجلّد هو جذر (root) مشروع TypeScript. يُحدِّد الملفّ tsconfig.json الملفات الجذر (root files) وخيارات الترجمة المطلوبة لترجمة المشروع. يُترجم المشروع بإحدى الطريقتين التاليتين: عبر استخدام أداة tsc دون أي ملفّات مُدخلَة (input files): في هذه الحالة يبحث المترجم عن الملف tsconfig.json بدءًا من المجلد الحالي ثمّ الصعود للأعلى في سلسلة المجلدات الآباء (parent directory chain). عبر استخدام أداة tsc دون أي ملفّات مُدخلَة وخيار سطر الأوامر --project (أو -p ...
الدوال في TypeScript
مقدمة تُعدّ الدوال أحد أساسات أي تطبيق مكتوب بلغة JavaScript. إذ تُستخدم لبناء طبقات تجريد (layers of abstraction)، ولبناء مكونات تعمل كالأصناف، ولإخفاء المعلومات (information hiding)، وتعمل كوحداتٍ (modules) كذلك. ورغم أن الأصناف ومجالات الأسماء والوحدات موجودة في TypeScript، إلّا أنّ الدوال لا تزال تلعب الدور الرئيسيّ في وصف كيفيّة القيام بالأمور. وتُضيف TypeScript كذلك بعض المزايا الجديدة لدوال JavaScript الاعتياديّة لتسهيل مهمّة العمل معها. الدوال يُمكن بدايةً إنشاء الدوال في لغة TypeScript كما في لغة JavaScript، ويُمكن إنشاء الدوال ...
JSX في TypeScript
مقدمة JSX بنيةٌ (syntax) مشابهةٌ للغة XML يُمكن تضمينها وتحويلها إلى شيفرة JavaScript صالحة، لكن آلية عملية التحويل تختلف من تطبيق (implementation) إلى آخر. اشتهرت JSX باستخدامها مع مكتبة React، لكنها تملك تطبيقات أخرى غير React. تدعم لغة TypeScript تضمين JSX، وتدقيق الأنواع فيها، وكذا ترجمة JSX إلى JavaScript مباشرةً. ملاحظة حول المصطلحات: نستخدم في هذه الصّفحة كلمة "صِفَة" للإشارة إلى الكلمة الإنجليزيّة "attribute" وكلمة "خاصيّة" للإشارة إلى كلمة "property"، كلاهما يُترجَم إلى كلمة "خاصيّة" ولهما نفس المعنى في معظم ...
الأصناف في TypeScript
مقدمة تعتمد لغة JavaScript التقليدية على الدوال والوراثة المعتمدة على سلسلة Prototype لبناء مكونات قابلة لإعادة الاستعمال، وقد يجد بعض المبرمجين هذه الطريقة غريبة ومرهقة، خاصّة الذين ألِفوا البرمجة كائنيّة التوجه التي تعتمد على الأصناف التي ترث وظيفة (functionality) الأصناف الأساس (base classes) وتُبنَى فيها الكائنات من هذه الأصناف. بدايةً من الإصدار ECMAScript 2015 المعروف كذلك بالإصدار ECMAScript 6، يُمكن لمبرمجي JavaScript بناء التطبيقات باستخدام البرمجة كائنيّة التوجّه المعتمِدة على الأصناف. وتسمح TypeScript للمطورين باستعمال هذه التقنيات الآن، وتُترجِمها إلى ...
الواجهات في TypeScript
مقدّمة تركيز التحقق من الأنواع (type-checking) على شكل (shape) القيم من مبادئ TypeScript الأساسية. يُصطلَح عليه أحيانًا بالتعبير duck typing أو التحقق من الأنواع الفرعيّة هيكليًّا (structural subtyping). تعمل الواجهات في TypeScript على تسمية هذه الأنواع، وهي طريقة قويّة لتعريف عقود (contracts) داخل شيفرتك أو عقود مع شيفرةٍ خارج مشروعك. واجهة بسيطة لنبدأ بمثال بسيط لنفهم كيفيّة عمل الواجهات: function printLabel(labelledObj: { label: string }) {
console.log(labelledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);
سيتحقّق مدقّق ...
مدخل إلى TypeScript
يُشار إلى TypeScript على أنّها مجموعة عليا (superset) من JavaScript وتُترجم (compile) إليها. وهذا يعني بأن البرامج المكتوبة بلغة JavaScript هي برامج TypeScript صالحة كذلك، ولأنّها تُترجم إلى لغة JavaScript عاديّة، فيُمكن كتابة برامج بلغة TypeScript وترجمتها وتشغيلها في أي مكان يقبل تشغيل برمجيات JavaScript مثل المتصفّح، أو منصّة Node.js، أو أي مُحرّكٍ (engine) يدعم الإصدار ECMAScript 3 من لغة JavaScript أو أي إصدار أحدث منه. تدعم TypeScript مزايا JavaScript الجديدة والتي قيد التطوير، ما يشمل مزايا الإصدار ECMAScript 2015 ...
الوحدات في TypeScript
ملاحظة حول المصطلحات تغيّرت طريقة استخدام المصطلحات في النسخة TypeScript 1.5، إذ كانت مجالات الأسماء (namespaces) تُسمّى قديمًا بمصطلح "الوحدات الداخليّة (internal modules)"، وما كان يُسمّى بالوحدات الخارجيّة (External modules) أصبح يُسمّى ببساطة بمصطلح "الوحدات (modules)" وهو ما سنغطّيه في هذه الصفحة. ويجب استخدام الكلمة المفتاحية namespace في الأماكن التي كانت تُستخدَم فيها الكلمة المفتاحية module للتصريح عن وحدة داخليّة في النسخ التي سبقت TypeScript 1.5، أي أنّ عليك استخدام namespace X { عوضًا عن module X { (انظر صفحة ...
المخاليط في TypeScript
مقدمة إضافةً إلى تسلسلات البرمجة كائنية التوجه التقليدية، هناك كذلك طريقة شائعة لبناء أصناف من مكونات قابلة لإعادة الاستعمال، وهي بناؤها عبر دمج أصناف جزئية أبسط. قد تكون فكرة المخاليط (mixins) أو السمات (traits) في لغات مثل Scala مألوفة بالنسبة إليك، وقد أصبح نمط المخاليط مشهورًا في مجتمع JavaScript كذلك. عينة لمخلاط يُمكنك التعرف على كيفية إنشاء المخاليط في TypeScript من الشيفرة أدناه. سنشرح مكونات الشيفرة تاليًا: // Disposable Mixin
class Disposable {
isDisposed: boolean;
...