ماذا يعني "as const" في TypeScript ولماذا هو مفيد؟
مرحبًا بالجميع! بدأت في تعلم TypeScript وصادفت بناء `as const`. فهمت أنه مرتبط بتأكيد الأنواع، لكنني لم أتمكن من فهمه بالكامل.
إليك مثال يربكني:
```typescript
const colors = ['red', 'green', 'blue'] as const;
// typeof colors -> readonly ["red", "green", "blue"]
const myColor = 'red' as const;
// typeof myColor -> "red" (نوع حرفي، وليس string)
const config = {
api: 'https://api.example.com',
port: 3000
} as const;
// typeof config -> { readonly api: "https://api.example.com"; readonly port: 3000 }
```
أرى أن الأنواع تتغير، لكنني لا أفهم:
1. لماذا مجرد `const colors = ['red', 'green', 'blue']` يعطي نوع `string[]`، بينما مع `as const` يعطي tuple مع حروف محددة؟
2. لماذا نحتاج إلى تحديد `as const` أصلاً إذا كان المتغير مُعلنًا بـ `const`؟ أليس `const` يجعل القيمة غير قابلة للتغيير؟
3. في أي سيناريوهات حقيقية يمكن أن يكون هذا مفيدًا؟ رأيت أنه يُستخدم في Redux actions،