SchemaUtils 深入问题分析

常见问题

内部字段泄漏

链式 DSL 会产生 _label_customMessages_required 等内部字段。面向 OpenAPI 或外部系统时,应在 Builder 阶段使用 toJsonSchema() 输出纯净 JSON Schema。

required 同步

pick()omit()partial() 会在受支持的嵌套 Schema 位置同步 required,包括对象属性、元组与追加数组项、组合、依赖和本地定义。partial(schema, fields) 只让选中的对象顶层字段变为可选,并保留无关约束。

深拷贝限制

SchemaUtils.clone() 会保留函数引用,克隆 RegExpDate,支持循环引用,并保留属性描述符。函数仍属于仅运行时值:克隆不会让包含函数的 Schema 变得可序列化或跨进程稳定。


对应示例文件

示例入口: schema-utils-advanced-issues.ts
说明: 覆盖内部字段泄漏、required 同步和 clone() 深拷贝边界三个最容易踩坑的点。