ماذا يعني "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 لا يسمح لي بتغييرها.