Avatar ·

¿Qué significa "as const" en TypeScript y para qué sirve?

¡Hola a todos! Empecé a estudiar TypeScript y me topé con la construcción `as const`. Entiendo que está relacionada con la aserción de tipos, pero no logro comprenderla del todo. Aquí hay un ejemplo que me confunde: ```typescript const colors = ['red', 'green', 'blue'] as const; // typeof colors -> readonly ["red", "green", "blue"] const myColor = 'red' as const; // typeof myColor -> "red" (tipo literal, no string) const config = { api: 'https://api.example.com', port: 3000 } as const; // typeof config -> { readonly api: "https://api.example.com"; readonly port: 3000 } ``` Veo que los tipos cambian, pero no entiendo: 1. ¿Por qué simplemente `const colors = ['red', 'green', 'blue']` da el tipo `string[]`, mientras que con `as const` da una tupla con literales específicos? 2. ¿Para qué es necesario usar `as const` si la variable ya está declarada con `const`? ¿Acaso `const` no hace que el valor sea inmutable? 3. ¿En qué escenarios reales puede ser útil? He visto que se usa en acciones de Redux,