Zod coercion to date 自定义错误消息

Zod coercion to date custom error message

提问人:Gustavo Sales 提问时间:11/11/2023 更新时间:11/14/2023 访问量:80

问:

我有一个 zod 架构,需要从 html 输入验证日期时间。 这是它的样子:

const appointmentSchema = z.object({
  appointmentTime: z.coerce.date()
})

问题是当我与输入交互时,它是无效的,如下图所示。Zod 向我返回以下错误消息: .Invalid date

enter image description here

我想自定义此消息,但似乎没有任何效果,我已经尝试了以下操作:

...z.coerce.date({
invalid_type_error: 'Custom invalid date message. Doesn't work...'
})...
TypeScript 日期 时间 验证 zod

评论

2赞 adsy 11/11/2023
这是 zod 中的一个错误。有关说明和解决方法,请参阅此处:github.com/colinhacks/zod/issues/1526
0赞 sid 11/13/2023
您使用的是哪个 zod 版本?
0赞 Gustavo Sales 11/14/2023
我正在使用 Zod ^3.22.2

答:

0赞 Gustavo Sales 11/14/2023 #1

正如@adsy在评论中指出的那样。这是一个已知问题 https://github.com/colinhacks/zod/issues/1526

解决方法是覆盖 errorMap:

dateOfBirth: z
        .date({
          errorMap: (issue, { defaultError }) => ({
            message: issue.code === "invalid_date" ? "That's not a date!" : defaultError,
          }),
        })