用途:Effect Schema 用于在 TypeScript 中做运行时数据校验与类型推断,支持从外部数据解码、向外部编码,以及组合出复杂类型。
主要能力:提供基础类型(String、Number、Boolean、BigInt、Literal、Enums)、Struct、Array、NonEmptyArray、Record、Union 等构造;支持双向转换(Schema.transform、NumberFromString、DateFromString)、JSON 解析(Schema.parseJson)、过滤器(pattern、minLength、between、filter)、品牌类型(brand)、类式 Schema(Schema.Class、Schema.TaggedClass)、标签错误(Schema.TaggedError)与注解(annotations)。错误可用 TreeFormatter、ArrayFormatter 格式化。
使用方式:用 Schema.decodeUnknownSync 同步解码,Schema.decodeUnknown 在 Effect 中解码,Schema.decodeUnknownEither 返回 Either;编码用 Schema.encodeSync 或 Schema.encode。解析 JSON 时用 Schema.parseJson 替代 JSON.parse,使无效 JSON 与结构错误统一为 ParseError。
最佳实践:优先用标签联合而非可选属性;优先用 Schema.Class 而非 Struct;用 Schema.is() 做类型守卫与 Match 模式匹配,禁止直接访问 ._tag;避免用 Schema.Any 或 Schema.Unknown 弱化类型,仅在值确实不透明时使用。
适用场景:API 响应解析、配置加载、表单与输入校验、领域建模与状态机建模。
限制:资料未提供安装命令、版本要求、收费与平台信息;部分内容(如错误格式化示例)在资料中未完整给出。