首页 > 解决方案 > 访问“最终”模式并提取它的规则

问题描述

假设我有以下架构(Yup 文档中的示例之一):

let schema = object({
  isSpecial: boolean(),
  isBig: boolean(),
  count: number().when(['isBig', 'isSpecial'], {
    is: true, // alternatively: (isBig, isSpecial) => isBig && isSpecial
    then: yup.number().min(5),
    otherwise: yup.number().min(0),
  }),
});

const result = schema.validateSync({
  isBig: true,
  isSpecial: true,
  count: 10,
});

count最小值取决于 的值isBig。该值是在运行时调用 validate() 时确定的。有没有办法我可以以某种方式访问​​“最终”模式并以编程方式检查 Yup 决定强制执行的内容?

就像是:

const { result, finalSchema } = schema.validateSync({
  isBig: true,
  isSpecial: true,
  count: 10,
});

console.log(finalSchema.count.min) // 5

标签: javascriptyup

解决方案


推荐阅读