Avatar ·

ماذا يعني "as const" في TypeScript ومتى يتم استخدامه؟

مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في تعلم TypeScript وصادفت البناء `as const`. بصراحة، لا أفهم تمامًا ما يفعله ولماذا هو مطلوب. هذا مثال وجدته في التوثيق: ```typescript const colors = ['red', 'green', 'blue'] as const; ``` أفهم أن `as` يُستخدم لـ type assertion، مثل `someValue as string`. لكن ماذا يعني إضافة `const` بعد `as`؟ كيف يختلف هذا عن تعريف مصفوفة أو كائن بسيط؟ حاولت كتابة هذا الكود: ```typescript const fruits = ['apple', 'banana']; const fruitsConst = ['apple', 'banana'] as const; // ما الفرق بين fruits و fruitsConst؟ // لماذا لا يمكنني تغيير fruitsConst؟ ``` لاحظت أيضًا أنه عندما أستخدم `as const` مع الكائنات، يبدأ TypeScript في مراقبة قيم الخصائص بدقة. على سبيل المثال، إذا كتبت: ```typescript const config = { mode: 'development' as const, port: 3000 }; ``` فإن TypeScript لا يسمح لي بتغييرها.