0Pricing
TypeScript Academy · Lección

Arrays de solo lectura y datos inmutables

Utilice ReadonlyArray para evitar mutaciones accidentales.

Arrays de solo lectura y datos inmutables es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de TypeScript Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de TypeScript Academy incluye 4 lecciones en total.

Bienvenida

Los arrays mutables pueden modificarse accidentalmente desde cualquier parte del código. ReadonlyArray y el modificador readonly de TypeScript le ayudan a imponer la inmutabilidad.

El modificador readonly en arrays

Añada el modificador `readonly` delante del tipo de array para impedir su mutación. El array se puede leer, pero no modificar.
const ids: readonly number[] = [1, 2, 3];
// ids.push(4);   // Error
// ids[0] = 99;   // Error
console.log(ids[0]); // OK — reading is fine

La forma genérica ReadonlyArray<T>

`ReadonlyArray` es el equivalente genérico de `readonly T[]`. Ambas formas impiden utilizar push, pop, splice y asignaciones mediante índices.
const names: ReadonlyArray<string> = ['Alice', 'Bob'];
// names.push('Charlie'); // Error

Devolver arrays de solo lectura desde funciones

Devuelva arrays de solo lectura desde las funciones para indicar a quienes las llaman que el resultado no debe modificarse.
function getConfig(): readonly string[] {
  return ['host', 'port', 'db'];
}

Parámetros de funciones inmutables

Marque los parámetros de tipo array como readonly para impedir que la función modifique el array de quien la llama.
function sum(nums: readonly number[]): number {
  return nums.reduce((a, b) => a + b, 0);
  // nums.push(99); // Error inside function
}

as const para arrays literales

La aserción `as const` hace que un array sea de solo lectura e infiere un tipo tupla con tipos literales para sus elementos, en lugar de tipos ampliados.
const colors = ['red', 'green', 'blue'] as const;
// type: readonly ['red', 'green', 'blue']
// colors.push('yellow'); // Error

Readonly no congela profundamente

readonly solo impide que se modifique la referencia al array. Si los elementos son objetos, sus propiedades aún se pueden cambiar.
const users: readonly { name: string }[] = [{ name: 'Alice' }];
// users.push({}); // Error
users[0].name = 'Bob'; // Allowed — object itself is mutable

Inmutabilidad profunda con Readonly<T>

Para lograr la inmutabilidad profunda de los objetos, combine ReadonlyArray con Readonly en los elementos. También puede utilizar una biblioteca como immer.
type ImmutableUser = Readonly<{ name: string; scores: readonly number[] }>;
const u: ImmutableUser = { name: 'Alice', scores: [90, 85] };
// u.name = 'Bob';       // Error
// u.scores.push(100);  // Error

Asignación entre arrays mutables y de solo lectura

Un array de solo lectura NO se puede asignar a un tipo de array mutable. Esto protege frente a pasar accidentalmente un array inmutable donde se espera una mutación.
const ro: readonly number[] = [1, 2];
const mutable: number[] = ro; // Error!

Cuándo utilizar arrays de solo lectura

Utilice arrays de solo lectura para objetos de configuración, constantes, parámetros de funciones que se comprometa a no modificar y valores devueltos por funciones puras.

El operador spread crea un array mutable nuevo

Expandir un array de solo lectura en un literal de array nuevo crea una copia mutable. Es un patrón limpio para realizar cambios sin mutar el original.
const base: readonly number[] = [1, 2, 3];
const extended: number[] = [...base, 4]; // new mutable array

Comprobación rápida

¿Qué operación NO está permitida en un `readonly number[]` en TypeScript?

Resumen

Utilice `readonly T[]` o `ReadonlyArray` para impedir la mutación de arrays. Utilice `as const` para arrays constantes literales. El operador spread crea una copia mutable cuando necesita ampliar un array de solo lectura.

Preguntas frecuentes

¿La lección «Arrays de solo lectura y datos inmutables» es gratis?

Sí — el texto completo de «Arrays de solo lectura y datos inmutables» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de TypeScript Academy, actualiza a CoddyKit PRO. El curso de TypeScript Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Arrays de solo lectura y datos inmutables»?

Utilice ReadonlyArray para evitar mutaciones accidentales. Practicas TypeScript Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar TypeScript Academy?

No se requiere experiencia previa. TypeScript Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Arrays de solo lectura y datos inmutables»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de TypeScript Academy?

Sí. Cada lección de TypeScript Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Arrays tipados: T[] y Array
  2. Arrays de solo lectura y datos inmutables
  3. Tuplas: arrays tipados de longitud fija
  4. Enumeraciones: constantes numéricas y de texto
← Volver a TypeScript Academy