gpt4 book ai didi

typescript - 如何使用 Yup 验证相互依赖的数字字段?

转载 作者:行者123 更新时间:2023-12-05 06:17:01 26 4
gpt4 key购买 nike

我有一个包含相互依赖的数字字段的模型,我正在努力了解如何使用 yup 设置复杂的验证.

为了简单起见,想象一个具有以下形状的对象:

{
a: number,
b: number
}

我想验证 b 小于 a 的一半。

所以从概念上讲,我想要的是这样的:

yup.object().shape({
a: yup
.number(),
b: yup
.number()
.max(a/2) <-- DOES NOT WORK

当然,这是行不通的,因为那里的范围内没有a

使用 test,我不知道如何将整个对象放入范围:

yup.object().shape({
a: yup
.number(),
b: yup
.number()
.test('test', 'b should be less than a/2', b => b < a/2) <-- DOES NOT WORK

并且使用 when(条件验证)似乎也没有帮助,尽管它似乎用于相互依赖字段的复杂验证:

yup.object().shape({
a: yup
.number(),
b: yup
.number()
.when('a', {is: true, then: yup.number().max(a/2)}) <-- DOES NOT WORK

最佳答案

看来when还有其他重载传递测试字段的值:

yup.object().shape({
a: yup
.number(),
b: yup
.number()
.when('a', (a, schema) => return schema.max(a/2))

关于typescript - 如何使用 Yup 验证相互依赖的数字字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61840374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com