البرمجة

تقييد الأعداد في TypeScript

بدأت TypeScript في دعم أنواع الأعداد الأدبية (Number Literal Types) منذ الإصدار 2.0 RC، مما سمح للمطورين بتحديد أنواع محددة للأرقام مثل type t = 1 | 2;. ولكن السؤال الذي يطرح نفسه هو: هل من الممكن تقييد نطاق الأعداد إلى نطاق معين، مثل 0-255، دون الحاجة إلى كتابة جميع الأرقام في النطاق؟

في حالتك، يقبل المكتبة قيم الألوان للوحة الألوان من 0 إلى 255، وتفضل تسمية عدد قليل منها ولكن تقييدها بين 0 و255.

حتى الآن، ليس هناك دعم مباشر في TypeScript لتحقيق ذلك بطريقة تلقائية دون كتابة جميع الأرقام في النطاق. ومع ذلك، يمكن القيام بذلك ببعض الحيل. على سبيل المثال، يمكنك استخدام نوع العدد (Number Type) بالإضافة إلى شرط (Conditional Type) لتحقيق هذا الهدف بشكل نسبي:

typescript
type ColorValue = 0 | 1 | 2 | ... | 255; declare function libraryFunc(color: ColorValue): void;

ومع ذلك، تحديد جميع الأرقام من 0 إلى 255 يعتبر مهمة مرهقة وغير عملية بشكل واضح. لحسن الحظ، يمكننا اللجوء إلى أسلوب آخر يقترب من ما تبحث عنه باستخدام جدول (Array) لتمثيل النطاق المطلوب:

typescript
type ColorValue = 0 | 1 | 2 | ... | 255; const palette: ColorValue[] = Array.from({ length: 256 }, (_, index) => index); declare function libraryFunc(color: ColorValue): void;

في هذا المثال، يتم إنشاء مصفوفة تحتوي على جميع الأرقام من 0 إلى 255 باستخدام الدالة Array.from()، ثم يتم استخدام نوع العدد الذي تم تعريفه لتحديد نطاق القيم المقبولة. هذا يسمح لك بتحديد قيمة اللون باستخدام أرقام في النطاق المطلوب دون الحاجة إلى كتابة كل رقم بشكل منفصل.

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

المزيد من المعلومات

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

هناك طرق أخرى يمكن استخدامها لتحقيق نفس الهدف بشكل أكثر ذكاء، مثل استخدام مكتبات خارجية مثل range لتوليد الأرقام في النطاق المطلوب ديناميكياً، أو استخدام توليفات متقدمة من TypeScript مثل توليفات التعبيرات النمطية (Regular Expression Types) إذا كانت القيم في النطاق تتبع نمطاً محدداً.

على سبيل المثال، يمكن استخدام مكتبة range في TypeScript لتوليد النطاق المطلوب بسهولة. فيما يلي مثال على كيفية استخدامها:

typescript
import { range } from 'range'; type ColorValue = number; const palette: ColorValue[] = range(0, 255); // توليد الأرقام من 0 إلى 255 declare function libraryFunc(color: ColorValue): void;

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

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر