TypeScript
Tutorial TypeScript: Funciones de alto orden
TypeScript funciones alto orden: manejo. Domina el manejo de funciones de alto orden en TypeScript con ejemplos prácticos y detallados.
Aprende TypeScript y certifícateLas funciones de alto orden son un concepto fundamental en la programación funcional. Este concepto también es aplicable a TypeScript.
En general, una función de alto orden es una función que cumple con al menos una de las siguientes condiciones:
- Acepta una o más funciones como argumentos
- Devuelve una función como resultado
La capacidad de tratar funciones como argumentos o devolverlas como resultados se debe a que, en TypeScript y JavaScript, las funciones son "ciudadanos de primera clase". Esto significa que se pueden asignar a variables, almacenar en estructuras de datos, pasar como argumentos y devolver como resultados.
Funciones que aceptan otras funciones
Uno de los usos más comunes de las funciones de alto orden es operar con arrays. TypeScript hereda los métodos de alto orden de JavaScript para trabajar con arrays, como map
, filter
y reduce
. Aquí se muestran ejemplos de cada uno.
Ejemplo con map:
let numeros = [1, 2, 3, 4, 5];
let numerosDuplicados = numeros.map(function(numero) {
return numero * 2;
});
// Alternativamente, con notación de flecha:
// let numerosDuplicados = numeros.map(x => x * 2);
console.log(numerosDuplicados); // [2, 4, 6, 8, 10]
En este ejemplo, map
es una función de alto orden que toma una función como argumento. Esta función se aplica a cada elemento del array.
Ejemplo con filter:
let numeros = [1, 2, 3, 4, 5];
let numerosFiltrados = numeros.filter(function(numero) {
return numero % 2 === 0; // Filtrar por números pares
});
// Alternativamente, con notación de flecha:
// let numerosFiltrados = numeros.filter(x => x % 2 === 0);
console.log(numerosFiltrados); // [2, 4]
Aquí, filter
es la función de alto orden. La función que se pasa como argumento determina si un elemento debe ser incluido en el nuevo array.
Ejemplo con reduce:
let numeros = [1, 2, 3, 4, 5];
let suma = numeros.reduce(function(acumulador, numero) {
// A cada paso, el valor retornado se guarda en 'acumulador'
return acumulador + numero;
}, 0);
// Alternativamente, con notación de flecha:
// let suma = numeros.reduce((acumulador, numero) => acumulador + numero, 0);
console.log(suma); // 15
En este caso, reduce
es una función de alto orden que transforma un array en un solo valor. La función que se pasa como argumento se llama para cada elemento del array, y su retorno se va acumulando.
Funciones que devuelven otras funciones
Las funciones de alto orden también pueden devolver otras funciones.
function fabricaDeSaludos(saludo: string) {
return function(nombre: string) {
return `${saludo}, ${nombre}!`;
}
}
let hola = fabricaDeSaludos("Hola");
let saludo = hola("Mundo");
console.log(saludo); // "Hola, Mundo!"
En este ejemplo, fabricaDeSaludos
es una función de alto orden que devuelve una nueva función. Esta nueva función usa el argumento de fabricaDeSaludos
para construir un saludo personalizado.
Las funciones de alto orden son una herramienta poderosa que permite abstracciones de código más ricas y reutilizables. Proporcionan la base para muchos patrones de diseño y técnicas de programación funcional en TypeScript.
Ejercicios de esta lección Funciones de alto orden
Evalúa tus conocimientos de esta lección Funciones de alto orden con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Funciones
Reto composición de funciones
Reto tipos especiales
Reto tipos genéricos
Módulos
Polimorfismo
Funciones TypeScript
Interfaces
Funciones puras
Reto namespaces
Funciones flecha
Polimorfismo
Operadores
Conversor de unidades
Funciones flecha
Control de flujo
Herencia
Clases
Proyecto validación de tipado
Clases y objetos
Encapsulación
Herencia
Proyecto sistema de votación
Reto genéricos con clases
Inmutabilidad
Interfaces
Funciones de alto orden
Reto map y filter
Control de flujo
Interfaces
Reto funciones orden superior
Herencia y clases abstractas
Reto tipos mapped
Herencia de clases
Reto funciones puras
Variables y constantes
Introducción a TypeScript
Reto testing unitario
Funciones de primera clase
Clases
OOP y CRUD en TypeScript
Interfaces y su implementación
Tipos genéricos
Namespaces
Operadores y expresiones
Proyecto generador de contraseñas
Reto unión e intersección
Encapsulación
Tipos de unión e intersección
Tipos de unión e intersección
Reto hola mundo en TS
Variables y constantes
Funciones puras
Control de flujo
Introducción a TypeScript
Resolución de módulos
Control de flujo
Reto tipos de utilidad
Reto tipos literales y condicionales
Reto exportar e importar
Propiedades y métodos
Tipos de utilidad
Clases y objetos
Tipos de datos, variables y constantes
Proyecto Minigestor de tareas
Operadores
Funciones flecha y contexto
Proyecto Inventario de productos
Funciones
Reto type aliases
Funciones de alto orden
Funciones y parámetros tipados
Tipos literales
Reto enums
Tipos de utilidad
Modificadores de acceso y encapsulación
Polimorfismo
Tipos genéricos
Reto módulos
Tipos literales
Inmutabilidad
Proyecto Generator de datos
Variables y constantes
Funciones de primera clase
Todas las lecciones de TypeScript
Accede a todas las lecciones de TypeScript y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Typescript
Introducción Y Entorno
Instalación Y Configuración De Typescript
Introducción Y Entorno
Tipos De Datos, Variables Y Constantes
Sintaxis
Operadores Y Expresiones
Sintaxis
Control De Flujo
Sintaxis
Funciones Y Parámetros Tipados
Sintaxis
Funciones Flecha Y Contexto
Sintaxis
Enums
Sintaxis
Type Aliases Y Aserciones De Tipo
Sintaxis
Clases Y Objetos
Programación Orientada A Objetos
Interfaces Y Su Implementación
Programación Orientada A Objetos
Modificadores De Acceso Y Encapsulación
Programación Orientada A Objetos
Herencia Y Clases Abstractas
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Decoradores Básicos
Programación Orientada A Objetos
Propiedades Y Métodos
Programación Orientada A Objetos
Inmutabilidad
Programación Funcional
Funciones Puras Y Efectos Secundarios
Programación Funcional
Funciones De Primera Clase
Programación Funcional
Funciones De Alto Orden
Programación Funcional
Conceptos Básicos E Inmutabilidad
Programación Funcional
Funciones De Primera Clase Y Orden Superior
Programación Funcional
Composición De Funciones
Programación Funcional
Métodos Funcionales De Arrays (Map, Filter, Reduce)
Programación Funcional
Tipos Literales Y Tipos Condicionales
Tipos Intermedios Y Avanzados
Tipos Genéricos Básicos
Tipos Intermedios Y Avanzados
Tipos De Unión E Intersección
Tipos Intermedios Y Avanzados
Tipos De Utilidad (Partial, Required, Pick, Etc)
Tipos Intermedios Y Avanzados
Unknown, Never Y Tipos Especiales
Tipos Intermedios Y Avanzados
Tipos Mapped
Tipos Intermedios Y Avanzados
Genéricos Con Clases E Interfaces
Tipos Intermedios Y Avanzados
Módulos
Namespaces Y Módulos
Namespaces
Namespaces Y Módulos
Resolución De Módulos
Namespaces Y Módulos
Exportación E Importación De Módulos
Namespaces Y Módulos
Introducción A Módulos
Namespaces Y Módulos
Testing Unitario En Typescript
Testing
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender el concepto de funciones de alto orden y su importancia en la programación funcional.
- Aprender a utilizar funciones de alto orden para operar con arrays utilizando métodos como
map
,filter
yreduce
. - Conocer cómo se pueden pasar funciones como argumentos a otras funciones para implementar patrones como callbacks.
- Entender cómo las funciones pueden devolver otras funciones para crear abstracciones más reutilizables y flexibles.
- Reconocer el potencial y la utilidad de las funciones de alto orden en el diseño de programas y en el uso de técnicas de programación funcional.