我有以下受歧视的工会:
enum Option {
FULL = 'FULL',
TIME_PERIOD = 'TIME_PERIOD',
MONTH = 'MONTH',
}
const schema = z.discriminatedUnion('option', [
z.object({ option: z.literal(Option.FULL) }),
z.object({
option: z.literal(Option.TIME_PERIOD),
from: z.date(),
to: z.date(),
}),
z.object({ option: z.literal(Option.MONTH), month: z.date() }),
])
Run Code Online (Sandbox Code Playgroud)
现在我想细化第二个对象,检查日期是否from早于to:
const schema = z.discriminatedUnion('option', [
z.object({ option: z.literal(Option.FULL) }),
z.object({
option: z.literal(Option.TIME_PERIOD),
from: z.date(),
to: z.date(),
}).refine(
({ from, to }) => isBefore(from, to),
{
message: '"from" must be before "to"',
path: ['from'],
}
),
z.object({ option: …Run Code Online (Sandbox Code Playgroud)