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.

Encadenamiento condicional en JavaScript o TypeScript.

¿Existe una sintaxis para agregar una función a una cadena bajo ciertas condiciones?

En este ejemplo, me gustaría que myKey sea Joi.string().required() si modifier === true, pero solo Joi.string() si es false:

function customJoi(modifier) {
  return Joi.object({
    myKey: Joi.string() //#If(modifier) .required() #EndIf
  });
}

Sé que podría hacerlo sin esta función, con múltiples pasos. Solo estoy preguntando si hay una forma elegante de escribirlo de manera concisa para objetos grandes.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no existe una sintaxis incorporada en JavaScript o Joi para agregar una función a una cadena bajo ciertas condiciones. Sin embargo, existen un par de formas de lograr esto.

    Un enfoque es utilizar el operador ternario para agregar condicionalmente la función .required() a la cadena:

    function customJoi(modificador) {
      return Joi.object({
        myKey: modificador ? Joi.string().required() : Joi.string()
      });
    }
    

    Otro enfoque es definir la cadena como una variable separada y modificarla condicionalmente antes de pasarla a Joi.object():

    function customJoi(modificador) {
      let myKeyChain = Joi.string();
      if (modificador) {
        myKeyChain = myKeyChain.required();
      }
      return Joi.object({ myKey: myKeyChain });
    }
    

    Ambos enfoques permiten un código conciso y pueden ser fácilmente ampliados para manejar objetos más grandes con condiciones más complejas.

Comments are closed.