You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的Yup字符串数组验证schema不生效?

解决Yup数组元素字符串验证失效的问题

你的问题出在Yup的自动类型转换机制上:默认情况下,Yup会尝试把非字符串类型(比如数字、布尔值)自动转换成字符串,导致这些不符合要求的元素绕过验证规则。

解决方案

给数组内的字符串校验加上.strict()方法,关闭自动类型转换,强制校验原始数据类型:

locationTracking: yup
  .array()
  .of(yup.string().strict().typeError('数组元素必须为字符串'))
  .required('locationTracking是必填项')
  .typeError('locationTracking必须是数组')
  .min(1, 'locationTracking至少包含一个元素'),

补充说明

  1. .strict()会让Yup严格校验数据类型,不做任何自动转换,数字、布尔值这类非字符串元素会直接触发typeError提示。
  2. 你之前的代码存在拼写错误:.require()应为.required(),如果需要确保数组内无空字符串,可在.strict()后追加.required('数组元素不能为空')。

内容的提问来源于stack exchange,提问作者angelplusultra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:11:06