SuperAPI AI 工具集

functional-ts

编程与开发

查看项目

更新于 10-15 22:39

技能介绍

用途:在编写服务端 TypeScript 代码时,涉及领域模型、用例、仓储、状态迁移或业务逻辑,可用该技能获得函数式领域建模的指导,以最大化利用 TypeScript 类型系统,而非采用基于类的 OOP。

主要能力:

  1. 类型驱动领域建模:用判别联合表示状态,统一以 kind 作为判别字段;使用 type(而非 interface)、伴生对象、品牌类型、Readonly<>、函数属性写法,以及一个概念一个文件的结构。
  2. 通过函数表达状态迁移:用纯函数表达迁移,参数类型约束合法源状态,返回类型明确目标状态,非法迁移成为编译错误,并用 assertNever 做穷尽性检查。
  3. 错误处理(Railway Oriented Programming):不抛异常,用 Result 类型把错误当作值;错误类型定义为判别联合,便于调用方穷尽处理。
  4. 边界防御:在运行时用校验库 schema 校验外部输入(API 请求、数据库结果、文件读取),领域层内部信任类型,不使用类型断言(as),对 PII 字段套用 Sensitive<T> 包装。
  5. 声明式风格:用 filter / map / reduce 配合伴生对象谓词做数组变换,领域事件建模为不可变记录。
  6. 测试数据:用 as const satisfies Type 定义测试数据,保留判别字面量类型、防止类型拓宽。

使用方式:该技能会根据项目 package.json 的 dependencies / devDependencies 自动检测所用库并给出对应指引。校验库:zod、valibot、arktype;Result 库:neverthrow、byethrow、fp-ts、option-t。各主题细节分别见 domain-modeling.md、state-modeling.md、error-handling.md、boundary-defense.md、declarative-style.md、test-data.md。

适用场景:服务端 TypeScript 的领域层与业务逻辑设计,尤其是希望以类型约束状态与错误、减少运行时异常的项目。

限制:这些是建议而非严格规则,可依上下文自行判断;若偏离某条原则,应在注释中明确说明理由。典型可接受偏离理由包括:外部库要求类继承、不可变对象创建成本带来性能顾虑、团队约定采用其他模式。具体安装命令与更多用法资料暂未提供。