TypeScript: كيفية إنشاء واجهة تتطلب بالضرورة واحدة من خاصيتين؟
مرحباً بالجميع! أكتب تطبيقاً بلغة TypeScript لمعالجة الطلبات. لدي واجهة للمستخدم، يمكن أن يكون إما مسجلاً (وعندها لديه `userId`) أو ضيفاً (وعندها لديه `guestToken`). لكن الأهم هو أن المستخدم يجب أن يكون لديه بالضبط واحدة من هاتين الخاصيتين، وليس كلتيهما معاً ولا أياً منهما.\n\nهذه هي محاولتي:\n\n```typescript\ninterface User {\n name: string;\n email: string;\n userId?: number;\n guestToken?: string;\n}\n```\n\nلكن المشكلة هي أن TypeScript يسمح بإنشاء كائن حيث تكون كلتا الخاصيتين مفقودتين، أو كلتاهما موجودتان في نفس الوقت. على سبيل المثال:\n\n```typescript\nconst user1: User = { name: "آنا", email: "a@mail.ru" }; // لا يوجد userId ولا guestToken — لا يتم إصدار خطأ\nconst user2: User = { name: "إيفان", email: "i@mail.ru", userId: 123, guestToken: "abc" }; // كلتا الخاصيتين موجودتان — لا يتم إصدار خطأ أيضاً\n```\n\nكيف يمكنني جعل TypeScript يفرض وجود واحدة فقط من الخاصيتين بالضبط؟ سمعت عن union types لكني لست متأكداً من كيفية تطبيقها في هذه الحالة. شكراً مقدماً!