Funciones puras e inmutabilidad
Escriba funciones predecibles y sin efectos secundarios.
Funciones puras e inmutabilidad es una lección gratuita de TypeScript Academy en CoddyKit. Esta es la lección 1 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.
¿Qué es una función pura?
Una función pura devuelve el mismo resultado para la misma entrada y no produce efectos secundarios. No lee ni escribe en un estado externo, no modifica sus argumentos ni realiza operaciones de E/S.
Un ejemplo puro
Esta función depende únicamente de sus argumentos y solo produce un valor de retorno. Al llamarla, nunca cambia nada fuera de ella.
function add(a: number, b: number): number {
return a + b;
}
console.log(add(2, 3)); // 5, alwaysUn ejemplo impuro
Esta función lee y modifica una variable externa a su ámbito, por lo que su resultado depende de un estado oculto y deja un rastro. Por eso es impura.
let counter = 0;
function next(): number {
counter += 1; // side effect
return counter;
}
console.log(next(), next()); // 1 2, depends on historyTransparencia referencial
Una llamada pura es referencialmente transparente: puede sustituir la llamada por su resultado sin cambiar el programa. add(2, 3) se puede sustituir por 5 en cualquier lugar.
const x = add(2, 3) * 2;
const y = 5 * 2; // identical meaning
console.log(x === y); // truePor qué es útil la pureza
Las funciones puras son fáciles de probar (no requieren configuración previa), fáciles de almacenar en caché, seguras para ejecutarse en paralelo y sencillas de analizar porque no tienen dependencias ocultas.
Evite modificar los argumentos
Modificar una matriz o un objeto de entrada es un efecto secundario que quien llama quizá no espera. En su lugar, construya y devuelva un valor nuevo.
// Impure: mutates input
function pushImpure(xs: number[], v: number) { xs.push(v); return xs; }
// Pure: returns a new array
function pushPure(xs: number[], v: number): number[] { return [...xs, v]; }Actualizaciones inmutables con spread
El operador spread copia un objeto o una matriz, lo que permite sobrescribir campos sin tocar el original. Es la herramienta fundamental para realizar actualizaciones inmutables en TS.
interface User { name: string; age: number }
function birthday(u: User): User {
return { ...u, age: u.age + 1 };
}
const before = { name: "Ada", age: 30 };
const after = birthday(before);
console.log(before.age, after.age); // 30 31Actualización inmutable de matrices
Utilice map, filter y spread para obtener matrices nuevas en lugar de modificarlas. La matriz original permanece intacta para que otro código pueda seguir utilizándola.
const nums = [1, 2, 3];
const doubled = nums.map(n => n * 2);
console.log(nums, doubled); // [1,2,3] [2,4,6]readonly para mayor seguridad
Marcar los parámetros como readonly indica al compilador y a quienes leen el código que la función no los modificará, reforzando la pureza a nivel de tipos.
function sum(xs: readonly number[]): number {
return xs.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2, 3])); // 6Llevar los efectos a los extremos
Los programas reales necesitan efectos, como registros y operaciones de red. El estilo funcional mantiene el núcleo puro y aísla los efectos en los límites, de modo que la mayor parte del código sigue siendo predecible.
Una lista de comprobación mental
Para cada función, pregúntese: ¿depende únicamente de sus entradas? ¿Devuelve solo un valor? ¿Deja las entradas y el mundo exterior sin cambios? Tres respuestas afirmativas significan que es pura.
Comprobación rápida
Comprobación rápida de esta lección.
Resumen
Las funciones puras dependen únicamente de las entradas y no producen efectos secundarios, lo que proporciona transparencia referencial. Utilice spread, map/filter y readonly para realizar actualizaciones inmutables, y lleve los efectos del mundo real a los extremos del programa.
Aprende TypeScript con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 101
- Lecciones
- 352
Preguntas frecuentes
¿La lección «Funciones puras e inmutabilidad» es gratis?
Sí — el texto completo de «Funciones puras e inmutabilidad» 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 «Funciones puras e inmutabilidad»?
Escriba funciones predecibles y sin efectos secundarios. 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 1 de 4.
¿Cuánto tiempo toma la lección «Funciones puras e inmutabilidad»?
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
- Funciones puras e inmutabilidad
- Currificación y aplicación parcial
- Composición de funciones con tipos
- Utilidades pipe y flow tipadas