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 esunknown
, lo que significa que se requiere un argumento;Si no quieres
resolve
to be taking any arguments you can explicitly set the generic type ofPromise
avoid
;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 aresolve()
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 aresolve()
.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"); } });
javascriptreturn 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