SuperAPI AI 工具集

fp-taskeither-ref

编程与开发

查看项目

更新于 10-16 05:00

技能介绍

用途:TaskEither 快速参考,用于需要类型化错误的异步操作,例如 API 调用、Promise 包装,以及组合异步错误处理管线。它适合想要一份 TaskEither 运算符与模式速查表的场景。

形态与惰性:TaskEither = () => Promise<Either<E, A>>,构造是惰性的,必须调用 () 才会执行。

创建:TE.right(value) 表示异步成功;TE.left(error) 表示异步失败;TE.tryCatch(asyncFn, toError) 将 Promise 转为 TaskEither;TE.fromEither(either) 将 Either 转为 TaskEither。

转换:TE.map(fn) 转换成功值;TE.mapLeft(fn) 转换错误;TE.flatMap(fn) 链式调用(fn 返回 TaskEither);TE.orElse(fn) 从错误恢复。

执行:const result = await myTaskEither() 得到 Either<E, A>;也可用 pipe 配合 TE.match 做模式匹配。

常见模式:使用 pipe、TE.tryCatch 包装 fetch,检查 response.ok,读取 json 并做校验;用 TE.flatMap 串联异步调用;用 sequenceT(TE.ApplyPar) 做并行调用;用 TE.orElse 与 TE.getOrElse 做恢复。相较 async/await,TaskEither 让错误类型化且可组合。

限制:这些是 fp-ts 2.x 片段,需自备应用变量、类型、校验器与导入,并确认已安装版本。map 不会捕获抛出的异常;Task 没有类型化错误通道,包装不当的 Promise 仍可能 reject,应在可失败边界使用 tryCatch。需提供调用方持有的超时/中止信号并校验响应模式;并行调用需要受限并发及对数据、成本与副作用的授权,ApplyPar 失败时不会自动取消工作;错误回调必须脱敏密钥与私有负载。官方 API 见 fp-ts 模块。本技能仅在任务明确匹配上述范围时使用,输出不能替代针对具体环境的验证、测试或专家评审;若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。