Avatar ·

ماذا يعني العامل ! (علامة التعجب) عند الوصول إلى خاصية كائن في TypeScript؟

مرحباً بالجميع! بدأت تعلم TypeScript مؤخراً وواجهت بناء غير مفهوم بالنسبة لي. في كود زميلي، رأيت استخدام علامة التعجب بعد المتغير أو قبل الوصول إلى خاصية كائن. على سبيل المثال: ```typescript const userName: string | null = getUserName(); const length = userName!.length; ``` أو هذا الخيار: ```typescript interface User { name?: string; email?: string; } function getUserEmail(user: User): string { return user.email!; } ``` أفهم أن `?` تعني قيمة اختيارية (قد تكون undefined أو null). لكن ماذا يفعل `!`؟ هل هو عامل وصول إجباري؟ هل سيسبب خطأ أثناء التنفيذ إذا كانت القيمة في الواقع null أو undefined؟ حاولت البحث في Google، لكن كل ما وجدته هو عن "non-null assertion operator". بصراحة، يبدو مخيفاً بعض الشيء. هل يمكنكم شرح كيفية عمله ومتى يكون استخدامه آمناً بكلمات بسيطة؟ شكراً مسبقاً على المساعدة!