TypeScript

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ícate

Las 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.

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende TypeScript online

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

TypeScript
Test

Reto composición de funciones

TypeScript
Código

Reto tipos especiales

TypeScript
Código

Reto tipos genéricos

TypeScript
Código

Módulos

TypeScript
Test

Polimorfismo

TypeScript
Código

Funciones TypeScript

TypeScript
Código

Interfaces

TypeScript
Puzzle

Funciones puras

TypeScript
Puzzle

Reto namespaces

TypeScript
Código

Funciones flecha

TypeScript
Puzzle

Polimorfismo

TypeScript
Test

Operadores

TypeScript
Test

Conversor de unidades

TypeScript
Proyecto

Funciones flecha

TypeScript
Test

Control de flujo

TypeScript
Código

Herencia

TypeScript
Puzzle

Clases

TypeScript
Puzzle

Proyecto validación de tipado

TypeScript
Proyecto

Clases y objetos

TypeScript
Código

Encapsulación

TypeScript
Test

Herencia

TypeScript
Test

Proyecto sistema de votación

TypeScript
Proyecto

Reto genéricos con clases

TypeScript
Código

Inmutabilidad

TypeScript
Puzzle

Interfaces

TypeScript
Test

Funciones de alto orden

TypeScript
Test

Reto map y filter

TypeScript
Código

Control de flujo

TypeScript
Test

Interfaces

TypeScript
Código

Reto funciones orden superior

TypeScript
Código

Herencia y clases abstractas

TypeScript
Código

Reto tipos mapped

TypeScript
Código

Herencia de clases

TypeScript
Código

Reto funciones puras

TypeScript
Código

Variables y constantes

TypeScript
Puzzle

Introducción a TypeScript

TypeScript
Test

Reto testing unitario

TypeScript
Código

Funciones de primera clase

TypeScript
Puzzle

Clases

TypeScript
Test

OOP y CRUD en TypeScript

TypeScript
Proyecto

Interfaces y su implementación

TypeScript
Código

Tipos genéricos

TypeScript
Test

Namespaces

TypeScript
Test

Operadores y expresiones

TypeScript
Código

Proyecto generador de contraseñas

TypeScript
Proyecto

Reto unión e intersección

TypeScript
Código

Encapsulación

TypeScript
Puzzle

Tipos de unión e intersección

TypeScript
Test

Tipos de unión e intersección

TypeScript
Puzzle

Reto hola mundo en TS

TypeScript
Código

Variables y constantes

TypeScript
Código

Funciones puras

TypeScript
Test

Control de flujo

TypeScript
Código

Introducción a TypeScript

TypeScript
Código

Resolución de módulos

TypeScript
Test

Control de flujo

TypeScript
Puzzle

Reto tipos de utilidad

TypeScript
Código

Reto tipos literales y condicionales

TypeScript
Código

Reto exportar e importar

TypeScript
Código

Propiedades y métodos

TypeScript
Código

Tipos de utilidad

TypeScript
Test

Clases y objetos

TypeScript
Código

Tipos de datos, variables y constantes

TypeScript
Código

Proyecto Minigestor de tareas

TypeScript
Proyecto

Operadores

TypeScript
Puzzle

Funciones flecha y contexto

TypeScript
Código

Proyecto Inventario de productos

TypeScript
Proyecto

Funciones

TypeScript
Puzzle

Reto type aliases

TypeScript
Código

Funciones de alto orden

TypeScript
Puzzle

Funciones y parámetros tipados

TypeScript
Código

Tipos literales

TypeScript
Puzzle

Reto enums

TypeScript
Código

Tipos de utilidad

TypeScript
Puzzle

Modificadores de acceso y encapsulación

TypeScript
Código

Polimorfismo

TypeScript
Puzzle

Tipos genéricos

TypeScript
Puzzle

Reto módulos

TypeScript
Código

Tipos literales

TypeScript
Test

Inmutabilidad

TypeScript
Test

Proyecto Generator de datos

TypeScript
Proyecto

Variables y constantes

TypeScript
Test

Funciones de primera clase

TypeScript
Test

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

TypeScript

Introducción Y Entorno

Instalación Y Configuración De Typescript

TypeScript

Introducción Y Entorno

Tipos De Datos, Variables Y Constantes

TypeScript

Sintaxis

Operadores Y Expresiones

TypeScript

Sintaxis

Control De Flujo

TypeScript

Sintaxis

Funciones Y Parámetros Tipados

TypeScript

Sintaxis

Funciones Flecha Y Contexto

TypeScript

Sintaxis

Enums

TypeScript

Sintaxis

Type Aliases Y Aserciones De Tipo

TypeScript

Sintaxis

Clases Y Objetos

TypeScript

Programación Orientada A Objetos

Interfaces Y Su Implementación

TypeScript

Programación Orientada A Objetos

Modificadores De Acceso Y Encapsulación

TypeScript

Programación Orientada A Objetos

Herencia Y Clases Abstractas

TypeScript

Programación Orientada A Objetos

Polimorfismo

TypeScript

Programación Orientada A Objetos

Decoradores Básicos

TypeScript

Programación Orientada A Objetos

Propiedades Y Métodos

TypeScript

Programación Orientada A Objetos

Inmutabilidad

TypeScript

Programación Funcional

Funciones Puras Y Efectos Secundarios

TypeScript

Programación Funcional

Funciones De Primera Clase

TypeScript

Programación Funcional

Funciones De Alto Orden

TypeScript

Programación Funcional

Conceptos Básicos E Inmutabilidad

TypeScript

Programación Funcional

Funciones De Primera Clase Y Orden Superior

TypeScript

Programación Funcional

Composición De Funciones

TypeScript

Programación Funcional

Métodos Funcionales De Arrays (Map, Filter, Reduce)

TypeScript

Programación Funcional

Tipos Literales Y Tipos Condicionales

TypeScript

Tipos Intermedios Y Avanzados

Tipos Genéricos Básicos

TypeScript

Tipos Intermedios Y Avanzados

Tipos De Unión E Intersección

TypeScript

Tipos Intermedios Y Avanzados

Tipos De Utilidad (Partial, Required, Pick, Etc)

TypeScript

Tipos Intermedios Y Avanzados

Unknown, Never Y Tipos Especiales

TypeScript

Tipos Intermedios Y Avanzados

Tipos Mapped

TypeScript

Tipos Intermedios Y Avanzados

Genéricos Con Clases E Interfaces

TypeScript

Tipos Intermedios Y Avanzados

Módulos

TypeScript

Namespaces Y Módulos

Namespaces

TypeScript

Namespaces Y Módulos

Resolución De Módulos

TypeScript

Namespaces Y Módulos

Exportación E Importación De Módulos

TypeScript

Namespaces Y Módulos

Introducción A Módulos

TypeScript

Namespaces Y Módulos

Testing Unitario En Typescript

TypeScript

Testing

Accede GRATIS a TypeScript y certifícate

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el concepto de funciones de alto orden y su importancia en la programación funcional.
  2. Aprender a utilizar funciones de alto orden para operar con arrays utilizando métodos como map, filter y reduce.
  3. Conocer cómo se pueden pasar funciones como argumentos a otras funciones para implementar patrones como callbacks.
  4. Entender cómo las funciones pueden devolver otras funciones para crear abstracciones más reutilizables y flexibles.
  5. 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.