JavaScript 或 TypeScript 中的条件链

See*_*ven 5 javascript typescript joi

是否有一种语法可以在条件下将函数添加到链中?

在这个例子中,我想myKeyJoi.string().required()if modifier === true,但只是Joi.string()如果它是false

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

我知道我可以不用这个功能,但需要执行多个步骤。我只是想知道是否有一种好的方法可以为大型对象简洁地编写它。

Nin*_*olz 6

optional如果不需要的话,你可以采取。

myKey: Joi.string()[modifier ? 'required' : 'optional']()
Run Code Online (Sandbox Code Playgroud)


Gen*_*ser 5

您可以使用三元来实现这一点。

function customJoi(modifier) {
    return Joi.object({
        myKey: modifier ? Joi.string().required() : Joi.string()
    });
}
Run Code Online (Sandbox Code Playgroud)