# [设计]zod(先进+零依赖+解析不验证)

零依赖
解析,不验证

===
目前在 Zod 中不支持 Date 或 bigint 字面

# plugins

# Convert

sql --> model --> api(swagger) --> type(ts) --> schema(zod) --> json-schema --> form

# Comparison

不支持静态类型推理
  • Yup
缺少方法: (partial, deepPartial)
缺少 promise 模式
缺少 function 模式
缺少联合和交叉模式
  • io-ts
优先考虑功能编程的纯洁性,而不是开发者的经验
难以集成
依赖fp-ts函数式编程库解析结果和处理错误

缺少的方法:(pick, omit, partial, deepPartial, merge, extend)
缺少具有正确类型的非空数组(`[T, ...T[]])。
缺少 promise 模式
缺少 function 模式

===
// io-ts
const A = t.type({
  foo: t.string,
});
const B = t.partial({
  bar: t.number,
});
const C = t.intersection([A, B]);
type C = t.TypeOf<typeof C>;

===
// zod
const C = z.object({
  foo: z.string(),
  bar: z.number().optional(),
});
type C = z.infer<typeof C>;
  • Runtypes
// 优点
支持 branded 和 readonly 类型,而 Zod 不支持

===
缺少的方法:(deepPartial, merge)
缺少具有适当类型的非空数组(`[T, ...T[]])。
缺少 promise 模式
缺少错误定制功能
  • Ow
Ow 专注于函数输入验证, 使复杂的断言语句容易表达的库
支持更多的类型 @eg int32Array

===
但它不能让你解析未定型的数据

# 参考 @ref