symbol / bigint symbol و bigint

آخر تحديث: 2026-10-22

symbol / bigint symbol و bigint

ينشئ symbol قيمًا فريدة عالميًا لا تتكرر، وهو مناسب لمفاتيح الكائنات والمعرّفات الثابتة؛ أما bigint فيمثّل أعدادًا صحيحة بدقة غير محدودة، للأعداد التي تتجاوز النطاق الآمن للنوع number.

المجموعةالأنواع الأساسية
النوعنوع
الوضع الصارمغير مطلوب

ℹ️ معلومة يحوّل المحرر لغة TypeScript إلى JavaScript ثم يشغّلها (بدون فحص أنواع)؛ راجع ناتج كل مثال لنتيجة فحص الأنواع.

📝 الصيغة

const key = Symbol("id");          // قيمة فريدة؛ "id" مجرد وصف
const big: bigint = 9007199254740993n; // قيمة دقيقة خارج النطاق الآمن

⚙️ المعاملات

Symbol(desc)المعامل هو نص وصفي (يُقرأ عبر .description) ولا يؤثر في التفرّد
123nقيم bigint تنتهي باللاحقة n؛ ويمكن التحويل أيضًا عبر BigInt(123)

القيمة المُعادة:لا قيمة مُعادة — symbol/bigint تعليقات أنواع أساسية؛ أما Symbol() و BigInt() فدالتان في وقت التشغيل.

▶ مثال

عدّل الكود أدناه واضغط «جرّب» لرؤية نتيجة التحويل:

الناتج:

false order
9007199254740994

(مخرجات التشغيل بعد التحويل؛ رمزان Symbol واصفَاهما بالنص نفسه غير متساويين — وهذا هو معنى "التفرّد")

💡 نقاط مهمة

ℹ️ معلومة Symbol("a") !== Symbol("a") — فالوصف مجرد تسمية؛ ولتسجيل symbol مشترك عالميًا استخدم Symbol.for("a").
⚠️ تنبيه لا يمكن خلط bigint مع number في الحساب مباشرةً (تعبير 9007199254740993n + 1 يخطئ)، ولا يمكن تسلسله بـ JSON.stringify.
💡 تلميح لا تُعدّ الدالة Object.keys والحلقة for...in مفاتيح symbol، ما يجعلها مناسبة لتخزين "البيانات الوصفية الداخلية".
المزيد من الحالات قادم قريبًا.

📚 دروس ذات صلة

❓ أسئلة شائعة

س متى أحتاج bigint؟
ج عندما تتجاوز القيمة الصحيحة 2^53 - 1 (أي 9007199254740991) أو عندما تُشترط دقة العدد الصحيح: معرّفات ندفة الثلج، وحسابات التشفير، وتجميع المبالغ الكبيرة بوحدة القروش. ضمن النطاق يكفي number العادي.
س ما الاستخدام الفعلي للنوع symbol؟
ج ثلاثة سيناريوهات نموذجية: إضافة مفاتيح خصائص داخلية غير متضاربة للكائنات، وإنشاء ثوابت فريدة على مستوى الوحدة، وتنفيذ بروتوكولات اللغة عبر رموز well-known مثل Symbol.iterator و Symbol.asyncIterator.
س هل تساوي قيمتا Symbol("a")؟
ج لا تساوي — فكل استدعاء Symbol() ينتج قيمة جديدة كليًا. وللحصول على الرمز نفسه عبر الوحدات استخدم Symbol.for("a") (جدول التسجيل العالمي) الذي يُرجع النسخة نفسها للمفتاح نفسه.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%