es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pregunta sobre el argumento spread en TypeScript.

Este es mi código.

import _ from 'lodash';

function test(num1: number, num2: number) {
    console.log(num1, num2);
}

test(..._.take(_.shuffle([0, 1, 2]), 2));

Obtuve un error TS2556 en TS Playground y en VSCode.

Un argumento de propagación debe tener un tipo de tupla o pasar a un parámetro de resto. (ts2556)

También obtuve un error TS2556 en el sitio de repl.it.

Error TS2556: Se esperaban 2 argumentos, pero se obtuvo 0 o más.

No tengo idea de cómo resolver esto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en TypeScript, lodash y sintaxis de propagación, puedo ayudarte a comprender y resolver este error.

    El error TS2556 ocurre porque la función test() espera dos argumentos individuales, pero está recibiendo una sintaxis de propagación de la función _.take(_.shuffle([0, 1, 2]), 2).

    Para resolver este error, puede modificar la función test() para aceptar una matriz como parámetro en lugar de dos valores separados. Por ejemplo:

    function test(nums: number[]) {
      console.log(nums[0], nums[1]);
    }
    
    test(_.take(_.shuffle([0, 1, 2]), 2));
    

    Este código tomará la matriz barajada y tomada de lodash y la pasará como un solo argumento de matriz a la función test().

    Alternativamente, puede mantener la función test() original y modificar el argumento de propagación para que esté dentro de una matriz. Por ejemplo:

    test(...[..._.take(_.shuffle([0, 1, 2]), 2)]);
    

    Esto crea una nueva matriz con la sintaxis de propagación y la pasa como un solo argumento a la función test().

    Cualquiera de las soluciones debería resolver el error TS2556.

Comments are closed.