react - Función de llamada TypeScript con parámetros de descanso de otro con parámetros de descanso
typescript react (3)
No hay forma de pasar p1 y p2 a test1 desde test2. Pero podrías hacer esto:
function test2(p1: string, ...p2: string[]): void {
test1.apply(this, arguments);
}
Eso es hacer uso de Function.prototype.apply y el objeto de arguments .
Si no te gusta el objeto de argumentos o no quieres que todos los argumentos se pasen exactamente en el mismo orden, puedes hacer algo como esto:
function test2(p1: string, ...p2: string[]) {
test1.apply(this, [p1].concat(p2));
}
En TypeScript es posible declarar una función con "Parámetros de descanso":
function test1(p1: string, ...p2: string[]) {
// Do something
}
Supongamos que declaré otra función que llamó test1
:
function test2(p1: string, ...p2: string[]) {
test1(p1, p2); // Does not compile
}
El compilador produce este mensaje:
Los parámetros suministrados no coinciden con ninguna firma del objetivo de la llamada: no se pudo aplicar el tipo ''cadena'' al argumento 2 que es de tipo ''cadena []''.
¿Cómo puede test2
llamar a test1
con los argumentos proporcionados?
Pruebe el operador de propagación . Debería permitir el mismo efecto que en la respuesta de Jeffery pero tiene una sintaxis más concisa.
function test2(p1: string, ...p2: string[]) {
test1(...arguments);
}
Sí, no se compila porque estás haciendo algo incorrecto. Aquí está la manera correcta :
function test1(p1: string, ...p2: string[]) {
// Do something
}
function test2(p1: string, ...p2: string[]) {
test1(p1, ...p2);
}