【问题标题】:Merge of two enums zod合并两个枚举 zod
【发布时间】:2023-02-17 07:01:51
【问题描述】:

我有 2 个枚举,const Option1 = z.enum(["option1"])const Option2 = z.enum(["option2"])。 我想把这两个合并成z.ZodEnum<["option1", "option2"]>

到目前为止我想出的唯一方法是

export const Options = z.enum([
  ...Option1.options,
  ...Option2.options,
]);
// Options.options is now ["option1", "option2"]

有没有 zod 本机方法可以做到这一点?

【问题讨论】:

    标签: zod


    【解决方案1】:

    您在这里面临的问题是由于组合选项的类型。

    const allOptions = [...Option1.options, ...Option2.options]
    

    在这种情况下,allOptions 的推断类型是:("option1" | "option2")[] 并且 zod 无法从中创建枚举。

    但是,如果您这样定义 allOptions

    const allOptions = [...Option1.options, ...Option2.options] as const
    

    那么 allOptions 的推断类型将是元组 ["option1", "option2"],这正是您想要的。

    所以,把所有这些放在一起,结合这些选项,你会说:

    const Options = z.enum([...Option1.options, ...Option2.options] as const)
    

    并且推断的选项类型将是z.ZodEnum<["option1", "option2"]>

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多