如何通过Zod原生方式合并两个Zod枚举类型?
Zod枚举合并方法解答
目前Zod并没有提供专门用于合并枚举的原生API,你现在使用的通过解构枚举的options属性来合并数组,再传入z.enum()的方式,就是最直接且被广泛认可的做法。
具体代码示例:
import { z } from "zod"; const Option1 = z.enum(["option1"]); const Option2 = z.enum(["option2"]); // 合并两个枚举 export const Options = z.enum([ ...Option1.options, ...Option2.options, ]); // 验证类型:Options 为 z.ZodEnum<["option1", "option2"]>
如果合并的枚举存在重复选项,可以通过Set来去重,避免无效的重复枚举值:
export const Options = z.enum([ ...new Set([...Option1.options, ...Option2.options]) ]);
这个方式本质上利用了Zod枚举的options属性会暴露枚举所有可选值数组的特性,是官方设计中支持的用法,无需额外的原生合并方法。
内容的提问来源于stack exchange,提问作者Gabriel Petersson
相关产品推荐
相关产品推荐

