使用Zod校验React Select选中对象非空的实现问题
Zod校验react-select选中值的正确写法
你之前的写法z.object("Country required")是错误的,因为z.object()的参数需要是对象结构定义,而非错误提示文本。要实现仅校验选中的Country对象非null且已定义、无需校验字段的需求,推荐以下几种写法:
最简方案:用
z.any().nonnull()
直接允许任意类型,但强制排除null和undefined,同时可以自定义错误提示:const schema = z.object({ // 其他字段 country: z.any().nonnull("Country required") });更严谨的方案:用
z.unknown().nonnull()
和any类似,但明确表示值类型未知,仅校验存在性,适合不需要依赖类型推断的场景:const schema = z.object({ // 其他字段 country: z.unknown().nonnull("Country required") });保留类型提示的方案:用
z.custom()
如果想关联你的Country接口,让TS保留类型推断(但不校验字段),可以用自定义校验:const schema = z.object({ // 其他字段 country: z.custom<Country>( (val) => val !== null && val !== undefined, "Country required" ) });
内容的提问来源于stack exchange,提问作者PoCiTo
相关产品推荐
相关产品推荐

