Skip to content

prohibitedIf ​

满足条件时字段必须为空,否则为选填。类似 Laravel 的 prohibited_if。

签名 ​

ts
function prohibitedIf<T>(condition: Condition, schema: Schema<T>, msg?: Message): Schema<T | undefined>

type Condition = Record<string, unknown> | ((info: { parent: unknown; root: unknown }) => boolean)

参数 ​

参数类型说明
conditionCondition同级字段及其值:{ delivery: 'courier' };多个值用数组:{ delivery: ['courier', 'post'] }。也可以是函数
schemaSchema<T>值存在时使用的 Schema
msgMessage自定义信息

错误代码 ​

代码触发条件默认信息
prohibited条件满足但传入了值Must be empty

可以修改这些文本:见 错误信息与国际化。

注意事项 ​

用于防止不应同时出现的数据:免费商品的价格、个人的公司税号。

示例 ​

ts
const Product = object({
  type: oneOf(['free', 'paid']),
  price: prohibitedIf({ type: 'free' }, coerce.number()),
});

validate(Product, { type: 'free', price: '10' }).errors; // { price: 'Must be empty' }
validate(Product, { type: 'paid', price: '10' }).data;   // { type: 'paid', price: 10 }

另请参阅 ​