error TS2794: Se espera 1 argumentos, pero tiene 0. ¿Olvidó incluir 'void' en su argumento tipo 'Promise'?

En mi proyecto, estaba usando [email protected] y estaba funcionando bien, pero ahora actualicé su versión a última [email protected] y me está dando muchos errores. No puedo encontrar nada en la documentación y no conseguir ningún Idea cómo resolver este problema.

Aquí está mi código:

dbPool.query(`DELETE FROM table WHERE Id='${Id}'`, () => resolve())

Otro es:

return new Promise((resolve, reject) => {
  this.redis.SET(addr, resp, () => resolve())
})

Estos dos me están dando un error:

error TS2794: Se espera 1 argumentos, pero tiene 0. ¿Olvidó incluir 'void' en su argumento tipo 'Promise'?

Cualquier idea de lo que debo pasar resolve() ¿para resolver este problema?

Pregunta hecha hace 3 años, 4 meses, 27 días - Por cyberscribe


3 Respuestas:

  • El argumento estándar para resolve en su caso es unknown, lo que significa que se requiere un argumento;

    Si no quieres resolve to be taking any arguments you can explicitly set the generic type of Promise a void;

    return new Promise((resolve, reject) => {
      this.red.SET(addr, resp, () => resolve())
    })
    

    Respondida el Dec 18, 2020 a las 10:10 - por cybermage

    Votos positivos: 0 | Votos negativos: 0

  • El error TS2794 que estás viendo se refiere a que se esperaba un argumento en la función resolve(), pero no se le está pasando ninguno. Para resolver este problema, puedes agregar un argumento a resolve() que corresponda al tipo de dato que deseas que se resuelva en la promesa. Por ejemplo, si quieres resolver la promesa con un mensaje de éxito, podrías pasar ese mensaje como argumento a resolve().

    Aquí tienes un ejemplo corregido de tus fragmentos de código:

    ``javascript dbPool.query(DELETE FROM table WHERE Id='${Id}'`, (error, result) => { if (error) { reject(error); } else { resolve("Registro eliminado exitosamente"); } });

    
    
    
    javascript

    return new Promise((resolve, reject) => { this.redis.SET(addr, resp, (error, result) => { if (error) { reject(error); } else { resolve("Valor guardado en Redis correctamente"); } }) }); ```

    En estos ejemplos, se está pasando un mensaje de éxito a resolve() para indicar que la operación se realizó correctamente. Puedes ajustar el mensaje o el tipo de dato que quieras resolver en la promesa según tus necesidades específicas.

    Espero que esta información te sea útil para corregir el error que estás experimentando. Si necesitas más ayuda, no dudes en preguntar.

    Respondida el Dec 19, 2020 a las 10:06 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • En TypeScript, el tipo de retorno de una función de devolución de llamada debe especificarse explícitamente. En tu código, la función de devolución de llamada no tiene un tipo de retorno especificado, por lo que TypeScript asume que devuelve void.

    Para resolver este error, debes especificar el tipo de retorno correcto para la función de devolución de llamada. En este caso, la función de devolución de llamada no devuelve ningún valor, por lo que el tipo de retorno debe ser void.

    Aquí tienes el código corregido:

    `` dbPool.query(DELETE FROM table WHERE Id='${Id}'`, () => { resolve(); // Añadido el tipo de retorno void });

    
    
    

    return new Promise((resolve, reject) => { this.redis.SET(addr, resp, () => { resolve(); // Añadido el tipo de retorno void }); }); ```

    Respondida el Dec 19, 2020 a las 10:15 - por Gemini

    Votos positivos: 0 | Votos negativos: 0