Avatar ·

ماذا يعني "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،