Typed Service Contracts 定义了一种垂直切片架构,结合契约式设计(DbC)原则,把应用逻辑视为严格定义的工作单元:输入经过解析而非仅仅校验,错误以 Result 模式作为值返回,而不是抛出异常。
适用场景:构建 CLI 或库时需要在用户输入与系统逻辑间建立严格边界;需要复杂校验,输入须先转换(例如确认字符串是有效文件路径);高可靠性要求,不能承受未处理的运行时异常;希望把数据校验测试与业务逻辑测试分离。
架构组件:Spec(spec.ts)是契约或端口,定义"做什么",包含输入 Zod schema(把原始输入解析为有效 DTO)、输出 schema、错误 schema(具体失败模式的可辨识联合,而非泛化错误)、Result 类型(Success | Failure)以及接口定义。Handler(handler.ts)是实现或适配器,定义"怎么做",实现 Spec 中的接口,是处理副作用(文件系统、API 调用)的非纯类,绝不抛异常,需捕获内部错误并映射为 Result 类型。
使用方式:先按模板定义契约,包括可复用校验器、输入命令 schema、错误码枚举、成功与失败结果对象、接口;再实现 Handler,在 try 中执行业务逻辑并在失败时显式返回错误对象,catch 块作为安全网映射未知运行时错误。测试分两类:契约测试针对 schema,用数据驱动方式验证非法输入被拒绝;逻辑测试针对 Handler,mock 外部依赖并断言 Result 对象。
限制:资料未提供该技能的具体安装命令、平台支持范围、许可或收费信息。示例代码依赖 zod 及 vitest/jest 等测试框架,实际使用需自备这些依赖。