Search code examples
javascripttypescriptjoi

Conditional chaining in JavaScript or TypeScript


Is there a syntax to add a function to a chain under conditions?

In this example, I would like myKey to be Joi.string().required() if modifier === true, but just Joi.string() if it is false:

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

I know I could do without this feature, with multiple steps. I'm just wondering if there is a nice way to write it concisely for large objects.


Solution

  • You could take optional, if not required.

    myKey: Joi.string()[modifier ? 'required' : 'optional']()