使用zod时的注意:nullable vs optional

·

1 min read

定义zod schema的时候,有时候定义为nullable时要注意:如果你是从一个可能为空的对象里取出一个字段来parse的时候,可能会出现问题:

const schema = z.object({
  a: z.string().nullable()
});

const rawData = {
  nested: null
};

const data = schema.parse({
  a: rawData.nested?.a
});

会导致throw,程序无法继续下去。

解决办法:

  1. schema设置为 nullable().optional()

  2. 传参时 rawData.nested?.a ?? null

总结:

要注意nullundefined的区别。