Parámetros rest en funciones
Asigne tipos a funciones que aceptan cualquier cantidad de argumentos.
Parámetros rest en funciones 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.
Funciones con muchos argumentos
Los parámetros rest permiten que una función acepte cualquier cantidad de argumentos, que se recopilan en un solo array. TypeScript asigna un tipo a ese array, lo que proporciona seguridad incluso en llamadas de longitud variable.
Parámetro rest básico
Anteceda el último parámetro con ... y asígnele un tipo de array. Dentro de la función se comporta como un array normal.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
console.log(sum(1, 2, 3, 4)) // 10Llamar sin argumentos
Un parámetro rest puede coincidir con cero argumentos: el array simplemente queda vacío. No se necesita ningún tratamiento especial para el caso sin argumentos.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
console.log(sum()) // 0Rest después de parámetros fijos
Un parámetro rest puede seguir a parámetros fijos, pero debe ser el último. Los parámetros fijos se vinculan primero; todo lo que sobra se incluye en el array rest.
function join(separator: string, ...parts: string[]): string {
return parts.join(separator)
}
console.log(join("-", "a", "b", "c")) // a-b-cUn solo rest, siempre al final
Puede tener como máximo un parámetro rest y no puede haber nada después de él. Colocar un parámetro después del rest provoca un error de sintaxis.
// function bad(...nums: number[], last: number) {} // Error
function ok(first: number, ...rest: number[]) {
return first + rest.length
}
console.log(ok(10, 1, 2)) // 12Restricciones de tipo de los elementos
El tipo de los elementos del array rest restringe todos los argumentos. Pasar un tipo incorrecto se detecta en tiempo de compilación.
function tags(...labels: string[]): string {
return labels.join(",")
}
console.log(tags("a", "b"))
// tags("a", 5) // Error: 5 is not a stringRest con un tipo unión
El tipo de los elementos puede ser una unión, lo que permite argumentos de distintos tipos. Dentro de la función, determine el tipo de cada elemento antes de usarlo.
function show(...items: (string | number)[]): string {
return items.map(String).join(" ")
}
console.log(show("x", 1, "y", 2)) // x 1 y 2Rest con tipos de tupla
Un parámetro rest puede tener un tipo de tupla para describir una forma con elementos fijos seguidos de elementos variables. Aquí, el primer argumento es un string, seguido de cualquier cantidad de numbers.
function record(...args: [string, ...number[]]): string {
const [label, ...values] = args
return label + ": " + values.join(",")
}
console.log(record("scores", 9, 8, 7))El rest de tupla impone la aridad
Con un tipo rest de tupla, los elementos iniciales son obligatorios. Omitir el primer argumento obligatorio produce un error de compilación, lo que ofrece una garantía mayor que un array normal.
function record(...args: [string, ...number[]]): number {
return args.length
}
console.log(record("x")) // 1
// record() // Error: missing string argumentExpandir valores en una llamada rest
Puede pasar un array existente a un parámetro rest usando la propagación en el lugar de la llamada. El tipo de los elementos del array debe coincidir con el del parámetro.
function sum(...nums: number[]): number {
return nums.reduce((a, b) => a + b, 0)
}
const values = [1, 2, 3]
console.log(sum(...values)) // 6Rest en la práctica
Los parámetros rest son útiles para ayudantes de registro, formateadores y utilidades matemáticas: cualquier elemento que gestione una cantidad variable de entradas con un tipo común o estructurado.
function max(first: number, ...rest: number[]): number {
return rest.reduce((m, n) => (n > m ? n : m), first)
}
console.log(max(3, 7, 2, 9, 1)) // 9Comprobación rápida
Compruebe su comprensión de los parámetros rest tipados.
Resumen
Los parámetros rest usan ... en el último parámetro para recopilar los argumentos adicionales en un array tipado. Deben aparecer al final y solo puede haber uno. Puede tiparlos como un array simple, un array de unión o una tupla para expresar formas con elementos fijos seguidos de elementos variables que impongan la aridad. Propague un array existente en el lugar de la llamada para pasarlo a un parámetro rest.
Preguntas frecuentes
¿La lección «Parámetros rest en funciones» es gratis?
Sí — el texto completo de «Parámetros rest en funciones» 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 «Parámetros rest en funciones»?
Asigne tipos a funciones que aceptan cualquier cantidad de argumentos. 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 «Parámetros rest en funciones»?
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
- Parámetros rest en funciones
- Spread en arrays y objetos
- Elementos rest en tuplas
- Tipado de funciones variádicas