SuperAPI AI 工具集

fp-pipe-ref

编程与开发

查看项目

更新于 10-16 04:00

技能介绍

用途

fp-pipe-ref 是一份针对 fp-ts 库中 pipe 与 flow 的快速参考,适合在用户需要链式调用函数、组合操作或构建数据管道时查阅。

主要能力

pipe:转换一个值

import { pipe } from 'fp-ts/function'

// pipe(startValue, fn1, fn2, fn3)
// = fn3(fn2(fn1(startValue)))

const result = pipe(
  '  hello world  ',
  s => s.trim(),
  s => s.toUpperCase(),
  s => s.split(' ')
)
// ['HELLO', 'WORLD']

flow:创建可复用管道

import { flow } from 'fp-ts/function'

// flow(fn1, fn2, fn3) returns a new function
const process = flow(
  (s: string) => s.trim(),
  s => s.toUpperCase(),
  s => s.split(' ')
)

process('  hello world  ') // ['HELLO', 'WORLD']
process('  foo bar  ')     // ['FOO', 'BAR']

何时使用

使用 时机
pipe 立即转换某个具体值
flow 创建可复用的转换

与 fp-ts 类型配合

import * as O from 'fp-ts/Option'
import * as A from 'fp-ts/Array'

// Option 链
pipe(
  O.fromNullable(user),
  O.flatMap(u => O.fromNullable(u.email)),
  O.getOrElse(() => 'no email')
)

// Array 链
pipe(
  users,
  A.filter(u => u.active),
  A.map(u => u.name)
)

常见模式

// 数据置于末尾,支持部分应用
const getActiveNames = flow(
  A.filter((u: User) => u.active),
  A.map(u => u.name)
)

// 可在任何位置复用
getActiveNames(users1)
getActiveNames(users2)

使用方式

该技能通过提供 pipe 与 flow 的代码片段来辅助函数组合与数据管道编排。使用时需自行补充应用变量、类型、校验器与导入,并检查已安装的 fp-ts 版本。

适用场景

  • 需要立即转换某个具体值时使用 pipe。
  • 需要创建可复用的转换函数时使用 flow。
  • 与 fp-ts 的 Option、Array 等模块组合,构建类型安全的数据链。
  • 采用数据置于末尾的写法以实现部分应用与复用。

限制

  • 仅当任务与上述范围明确匹配时使用本技能。
  • 不要将输出视为环境特定验证、测试或专家评审的替代。
  • 若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。
  • 参考范围:这些是 fp-ts 2.x 片段。需提供应用变量、类型、校验器与导入,并检查已安装版本。
  • map 不会捕获抛出的异常。
  • Task 没有类型化错误通道;包装不当的 promise 仍可能 reject。
  • 应在易失败边界使用 tryCatch。
  • 官方 API:fp-ts 模块。