Introducción
En TypeScript, los parámetros rest permiten a una función aceptar un número indefinido de argumentos como un array. Esto es útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función. Los parámetros rest se definen utilizando el operador de propagación (...
).
Conceptos Clave
- Definición de Parámetros Rest: Los parámetros rest se definen utilizando el operador
...
seguido del nombre del parámetro. - Uso de Parámetros Rest: Los parámetros rest se tratan como un array dentro de la función.
- Compatibilidad con Otros Parámetros: Los parámetros rest deben ser el último parámetro en la lista de parámetros de la función.
Ejemplo Básico
Veamos un ejemplo básico de cómo se utilizan los parámetros rest en TypeScript:
function sum(...numbers: number[]): number { return numbers.reduce((acc, curr) => acc + curr, 0); } console.log(sum(1, 2, 3)); // 6 console.log(sum(10, 20, 30, 40)); // 100
Explicación del Código
- Definición de la Función: La función
sum
acepta un número indefinido de argumentos de tiponumber
gracias al parámetro rest...numbers
. - Uso del Método
reduce
: Dentro de la función,numbers
se trata como un array y se utiliza el métodoreduce
para sumar todos los elementos del array. - Llamadas a la Función: Se llama a la función
sum
con diferentes números de argumentos, y la función devuelve la suma de todos los argumentos.
Ejemplo con Parámetros Adicionales
Los parámetros rest pueden coexistir con otros parámetros, pero deben ser los últimos en la lista de parámetros:
function multiply(factor: number, ...numbers: number[]): number[] { return numbers.map(num => num * factor); } console.log(multiply(2, 1, 2, 3)); // [2, 4, 6] console.log(multiply(3, 4, 5)); // [12, 15]
Explicación del Código
- Definición de la Función: La función
multiply
acepta un parámetrofactor
de tiponumber
y un número indefinido de argumentos adicionales de tiponumber
gracias al parámetro rest...numbers
. - Uso del Método
map
: Dentro de la función,numbers
se trata como un array y se utiliza el métodomap
para multiplicar cada elemento del array por elfactor
. - Llamadas a la Función: Se llama a la función
multiply
con diferentes números de argumentos, y la función devuelve un nuevo array con los resultados de la multiplicación.
Ejercicio Práctico
Ejercicio
Escribe una función llamada concatenateStrings
que acepte un número indefinido de cadenas de texto y las concatene en una sola cadena, separadas por un espacio.
function concatenateStrings(...strings: string[]): string { // Tu código aquí } // Prueba tu función console.log(concatenateStrings("Hello", "world")); // "Hello world" console.log(concatenateStrings("TypeScript", "is", "awesome")); // "TypeScript is awesome"
Solución
function concatenateStrings(...strings: string[]): string { return strings.join(' '); } // Prueba tu función console.log(concatenateStrings("Hello", "world")); // "Hello world" console.log(concatenateStrings("TypeScript", "is", "awesome")); // "TypeScript is awesome"
Explicación de la Solución
- Definición de la Función: La función
concatenateStrings
acepta un número indefinido de argumentos de tipostring
gracias al parámetro rest...strings
. - Uso del Método
join
: Dentro de la función,strings
se trata como un array y se utiliza el métodojoin
para concatenar todos los elementos del array en una sola cadena, separadas por un espacio.
Conclusión
Los parámetros rest son una característica poderosa de TypeScript que permite a las funciones aceptar un número indefinido de argumentos. Esto es especialmente útil cuando no se sabe de antemano cuántos argumentos se pasarán a la función. Al dominar los parámetros rest, puedes escribir funciones más flexibles y reutilizables.
En el próximo tema, exploraremos los Módulos y Espacios de Nombres, donde aprenderás cómo organizar y estructurar tu código TypeScript de manera eficiente.
Curso de TypeScript
Módulo 1: Introducción a TypeScript
- ¿Qué es TypeScript?
- Configuración del Entorno de TypeScript
- Tipos Básicos
- Anotaciones de Tipo
- Compilando TypeScript
Módulo 2: Trabajando con Tipos
Módulo 3: Tipos Avanzados
Módulo 4: Funciones y Módulos
- Tipos de Función
- Parámetros Opcionales y Predeterminados
- Parámetros Rest
- Módulos y Espacios de Nombres
- Decoradores
Módulo 5: Programación Asíncrona
Módulo 6: Herramientas y Mejores Prácticas
- Linting y Formateo
- Pruebas de Código TypeScript
- TypeScript con Webpack
- TypeScript con React
- Mejores Prácticas