Avatar ·

تحديد مصفوفة بأنواع متعددة في TypeScript: أنواع الاتحاد مقابل المجموعات

مرحباً بالجميع! لقد بدأت مؤخراً في تعلم TypeScript وواجهت مشكلة عند تعريف مصفوفة يمكن أن تحتوي على عناصر من أنواع مختلفة. لدي دالة تأخذ مصفوفة من السلاسل النصية والأرقام. على سبيل المثال، أريد تخزين ID (رقم) واسم (سلسلة نصية) للمستخدم في مصفوفة واحدة. إليك كيف حاولت القيام بذلك: ```typescript let users = [1, "Alice", 2, "Bob"]; ``` يقوم TypeScript تلقائياً باستنتاج النوع `(string | number)[]`، والذي يبدو أنه يعمل. ولكن بعد ذلك احتجت إلى التحكم الصارم في الترتيب: أولاً رقم، ثم سلسلة نصية. جربت هكذا: ```typescript let user: [number, string] = [1, "Alice"]; ``` هذا جيد. لكن ماذا أفعل إذا أردت مصفوفة من هذه المجموعات؟ كتبت: ```typescript let users: [number, string][] = [[1, "Alice"], [2, "Bob"]]; ``` ولكن بعد ذلك ظهرت مهمة أخرى: المصفوفة يمكن أن تحتوي إما على سلاسل نصية أو أرقام، ولكن ليس في نفس العنصر. على سبيل المثال، قائمة الوسوم: `["typescript", 42, "javascript", 100]`. السؤال: كيف