requiredWithout
列出的字段中至少有一个未填写时,该字段为必填。类似 Laravel 的 required_without —— 例如“电话或邮箱”。
签名
ts
function requiredWithout<T>(fields: string[], schema: Schema<T>): Schema<T | undefined>参数
| 参数 | 类型 | 说明 |
|---|---|---|
fields | string[] | 同级字段的名称 |
schema | Schema<T> | 值存在时使用的 Schema |
错误代码
| 代码 | 触发条件 | 默认信息 |
|---|---|---|
required | 值为空且该字段为必填 | Required |
可以修改这些文本:见 错误信息与国际化。
示例
电话或邮箱
ts
const Contact = object({
phone: requiredWithout(['email'], string()),
email: requiredWithout(['phone'], pipe(string(), email())),
});
validate(Contact, {}).errors; // { phone: 'Required', email: 'Required' }
validate(Contact, { email: 'a@a.ru' }).valid; // true