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.

¿Existe alguna solución alternativa para el operador ‘+’ no se puede aplicar a los tipos ‘string | number’ y ‘string’ | ‘number’?

Antecedentes: Estoy llamando a una función dentro de una función que puede devolver una cadena o un número, y quiero agregar eso a otro valor. Pero me encuentro con ese error.

He intentado hacer una comprobación:

function addNumbers(obj): number | string {
  const returnedValue = helperFunction(obj.blah); // esto podría ser un número o una cadena
  if (Number.isNaN(returnedValue) === false) {
    return returnedValue + anotherValue;
  }
  return '-';
}

Asumí que Number.isNaN eliminaría el error, pero no lo hizo. ¿Alguna idea?

Tags:  

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando está relacionado con la verificación de tipos de TypeScript. El compilador te está dando un error porque estás intentando agregar una cadena de texto a otro valor, lo cual no está permitido en TypeScript.

    Para solucionar esto, puedes agregar una verificación de tipo al valor devuelto antes de sumarlo a otro valor. Puedes usar el operador typeof para determinar el tipo del valor devuelto y luego sumarlo al otro valor solo si es un número.

    Así es como se vería el código modificado:

    function addNumbers(obj):number | string {
     const returnedValue = helperFunction(obj.blah) //esto podría ser un número o una cadena de texto
     if (typeof returnedValue === 'number') {
      return returnedValue + anotherValue;
     }
     return '-';
    }
    

    Con esta modificación, si el valor devuelto es un número, se sumará a otro valor y se devolverá como un número. De lo contrario, se devolverá una cadena de texto '-'.

    Espero que esto te ayude.

Comments are closed.