Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

145
Vistas
¿Cómo validar de manera eficiente todos los argumentos en las funciones de Javascript?

Trabajo con Javascript (Typescript), más concretamente con React. Entonces, esta pregunta está escrita en Javascript, pero es más como una pregunta general.

Estoy tratando de refactorizar un código y extraer métodos estáticos . Una vez que extraigo el método, me encuentro comprobando si todos los argumentos recibidos son válidos. Esto se vuelve difícil de leer y, a veces, el propósito real de la función tiene solo unas pocas líneas.

Aquí hay un ejemplo de cómo terminaría escribiendo un método/función

 const isGreaterThan = (value1, value2) => { if(typeof value1 !== 'number'){ console.error("Invalid argument. value1 must be a number"); return 0; } if(typeof value2 !== 'number'){ console.error("Invalid argument. value2 must be a number"); return 0; } return value1 > value2 }

Ahora imagina si este método recibe un Array

 const isGreaterThanAll = (values, value1) => { if(!values instanceof Array){ console.error("Invalid argument. values must be an Array"); return 0; } if(!values.every(value => typeof value === 'number')){ console.error("Invalid argument. elements of values must be numbers"); return 0; } if(typeof value1 !== 'number'){ console.error("Invalid argument. value2 should be type of number"); return 0; } return values.every(value => value1 > value); }

Ahora imagine pasar un Object o una Array de Object . Dependiendo de la complejidad de los argumentos, esto se vuelve más difícil de seguir.

Algunas de mis preguntas son:

  • ¿Cuál es la mejor práctica para refactorizar el código en este escenario?
  • ¿Cómo puedo refactorizar este tipo de código para que sea más legible?
  • ¿Debo construir un método para verificar los argumentos?
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una forma de hacerlo es crear una función recursiva como esta.

 const isNumberOrArrayOfNumbers = (x) => { if (typeof x === 'number') { return true; } if ( Array.isArray(x) ) { return x.every(n => isNumberOrArrayOfNumbers(n)); } return false; }; const isGreaterThanAll = (values, value1) => { let valid = [values, value1].every(a => isNumberOrArrayOfNumbers(a)); if (!valid) { console.error('Invalid'); return Number.NaN; } return values.every(value => value1 > value); }; console.log( isGreaterThanAll([1,2,3,5,6,7],12) ); console.log( isGreaterThanAll([1,2,3,5,6,7],4) ); console.log( isGreaterThanAll([1,2,3,"r",5,6,7],12) );

Si está dispuesto a cambiar la firma de la función, también puede refactorizarla haciéndola variable y usando operadores de descanso

Eso podría ser algo como esto:

 const isGreaterThanAll = (n, ...m) => { let valid = [n, ...m].every(x => typeof x === 'number'); ... };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda