【问题标题】:How to validate enums in yup如何验证是的枚举
【发布时间】:2020-05-07 05:11:13
【问题描述】:

我正在使用 yup 为我的数据创建验证,我该如何处理枚举?

这是我的验证示例 - 我正在使用 yup 的 object.shape 方法:

export const deleteCityValidation = yup.object().shape({
  id: yup.string()
});

寻找一种验证输入字段的方法,该输入字段应该只具有一组枚举中的值,感谢任何帮助。

是否可以使用 yup.arrays 来验证枚举?

【问题讨论】:

  • 查看文档,例如:yup.mixed<keyof typeof YOUR_ENUM>().oneOf(Object.values(YOUR_ENUM)) 可以工作。
  • @r3dst0rm 感谢您的评论,我认为这可能会解决问题,但我应该对其进行测试,我真的很抱歉问这样一个愚蠢的问题,但 < keyof typeof > 的东西叫什么?我的意思是这些里面的全部内容
  • 枚举只是一个对象,使用 typeof 可以让 TypeScript 推断类型,使用 keyof 我们可以获得该对象的所有有效索引作为类型。由于mixed 是一个需要类型定义的泛型函数,我们将这样的类型放在< > 括号内。

标签: node.js typescript validation yup


【解决方案1】:

您可以使用如下示例:

let schema = yup.mixed().oneOf(['jimmy', 42]);

await schema.isValid(42); // => true
await schema.isValid('jimmy'); // => true
await schema.isValid(new Date()); // => false

更多info

【讨论】:

  • 或者他可以根据变量的类型使用regEx:let schema = string().matches(/(jimmy|test)/);
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多