
Las funciones puras son buenas
La clave para la inmutabilidad es comprender la noción de una función pura. Una función pura es una que siempre Devuelve la misma salida para una entrada dada. Se dice que las funciones puras son deterministas, ya que la salida es 100% predecible en función de la entrada. En términos más simples, una función pura es una función sin efectos secundarios. Nunca cambiará algo a tu espalda.
Todos hemos tenido esta experiencia:
function addPie(items: string()) {
items.push("Apple Pie"); // side effect!
return items;
}
const order = ("Burger", "Fries");
const before = order;
const updated = addPie(order);
console.log("before:", before); // ("Burger", "Fries", "Apple Pie") ← oops
console.log("updated:", updated); // ("Burger", "Fries", "Apple Pie")
Nota el addPie función, que es impura y, por lo tanto, tiene un efecto secundario. Cambia el items matriz lo envías. Como resultado, el before Cambios de referencia también. No es bueno, es posible que no espere eso. Cuando se comparten datos, ser mutable convierte todo en un objetivo en movimiento que es difícil de alcanzar.
Pero si la función proporciona inmutabilidad:
function addPieImmutable(items: string()) {
return (...items, "Apple Pie"); // no side effects, new array
}
const order = ("Burger", "Fries");
const before = order;
const updated = addPieImmutable(order);
console.log("before:", before); // ("Burger", "Fries") stable
console.log("updated:", updated); // ("Burger", "Fries", "Apple Pie")
Aquí, el before La referencia permanece sin cambios. Porque en lugar de actualizar el pedido, creamos uno nuevo (updated).
El cambio sucede
Ahora, este es un ejemplo trivial, pero puedes ver cómo en la segunda versión, nunca puede haber una condición de carrera o una batalla por los datos porque el orden en sí nunca cambia. En cambio, la orden se recrea. La inmutabilidad no significa nada cambia; Significa que los valores nunca cambian una vez creados. Sigue «cambiando» al reembolsar un nombre a un nuevo valor.
La noción de un estado de «antes» y «después» es crítica si desea características como deshacer, rastreo de auditoría y otras cosas que requieren un historial completo de estado.




