@deessejs/fp

中文文档
5.0.1发布于 2026/10/07MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2888

类型脚本的功能编程工具

中文使用文档
文档目录20 节
  1. 包括什么
  2. 为什么是这堆
  3. 快开始
  4. 先决条件
  5. 安装
  6. 使用量
  7. 引擎兼容性
  8. 可用命令
  9. 工作空间( 根)
  10. 软件包 : @deessejs/fp
  11. 应用 : web
  12. 兼容性
  13. 同伴依赖关系
  14. 发动机
  15. 项目结构
  16. 出版
  17. 结构说明
  18. 捐款
  19. 许可证
  20. 支助

@deessejs/fp (英语)

轻量级,TypeScript的型式安全功能编程工具. 成果,也许,尝试,单位,和朋友——只针对无害环境管理,不依赖运行时间,为一等互操作性设计 @ deessejs/ errors (英语)。 。 。 .

License CI Stars npm

Documentation

兄弟姐妹项目: @deessejs/errors 提供本地集成错误类型 @deessejs/fp是因为 Result 财务报告和审定财务报表 Try。将它们安装在一起,以获得一个没有胶水代码的完整错误处理故事. 内部使用 时间 deessejs.com (英语)。 。 。 .


包括什么

层你得到的东西为什么这很重要
Result<T, E>ok, (中文(简体) ), err,图案匹配,排序类型安全错误处理无一例外或无效.
Maybe<T>some, (中文(简体) ), none, (中文(简体) ), maybe, (中文(简体) ), map, (中文(简体) ), getOrElse构成的可选价值.
Try<T>try, (中文(简体) ), tryAsync转换为 Result在打入的 shell 中环绕抛出函数 .
Unit无效返回操作的单位类型不显示“ 无值” 表示 null 或者说 undefined。 。 。 .
公用事业pipe, (中文(简体) ), flow, (中文(简体) ), identity, (中文(简体) ), constant, (中文(简体) ), flip, (中文(简体) ), tupled编译功能时不附带临时助手.
Async公用事业sleep, (中文(简体) ), retry, (中文(简体) ), timeout, (中文(简体) ), Queue以时间为基础的原始人 Result。 。 。 .
上游公用事业Predicate, (中文(简体) ), Refinement, (中文(简体) ), not, (中文(简体) ), and, (中文(简体) ), or一等前卫和类型后卫.
收集类型Context, (中文(简体) ), Sequence, (中文(简体) ), Collection,协奏器助手各种来源的序列操作.
发电机组成gen() 与 yield*类似同步代码的 Async 流量控制 .
@deessejs/errors 融合全体 Result 构造器接受 @deessejs/errors没有字符串- error footguns —— 使用真实错误类型 .

为什么是这堆

  • 默认很简单. 没有过度工程, 没有花花公子类型的体操。 只是原始人 你需要写干净的代码.
  • 仅限无害环境管理. 现代包装,没有CJS shim,没有 module编号 :main 重叠.
  • 零运行时间依赖关系. 唯一的对等数据是 @deessejs/errors,这是选入。 图书馆本身是无依赖的.
  • TypeScript 6 头等舱. 严格类型, 不 any 出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出 仅凭类型是不够的.
  • Lockfile - clean pnpm 工作空间. 单人 pnpm install 重建 涂料 类型 测试整个单体.
  • 真正的测试. 测试,包括覆盖和整合测试 @ deessejs/ errors (英语)。 。 。 .

快开始

先决条件

  • 节点.js 22.14.0+ (中文(简体) ) (单位:千美元)engines.node (已执行)
  • 小时 10岁以上 联合国corepack enable 如果未安装)
  • 类型脚本 6+ 时间 供消费者使用(软件包输出) dist/*.d.ts(中文(简体) )

安装

# Install @deessejs/fp with its optional sibling, @deessejs/errors.
# See https://github.com/deessejs/errors
npm install @deessejs/fp @deessejs/errors

@deessejs/errors 是可选的——如果需要安装 Result<T, E> ,可以将键入错误而不是字符串.

使用量

import { ok, err, some, none, maybe, pipe } from '@deessejs/fp';

// Result: represent values that may have failed
const divide = (a: number, b: number) => (b === 0 ? err('Division by zero') : ok(a / b));

const result = divide(10, 2);
result.match({
  ok: (value) => console.log(`Result: ${value}`),
  err: (error) => console.error(`Error: ${error}`),
});

// Maybe: represent optional values
const user = { name: 'Alice', address: { city: 'Paris' } };
const city = maybe(user.address?.city)
  .map((c) => c.toUpperCase())
  .getOrElse('Unknown');

// pipe: compose functions without glue
const trim = (s: string) => s.trim();
const uppercase = (s: string) => s.toUpperCase();
const processed = pipe('  hello  ', trim, uppercase);

引擎兼容性

运行时间最小版本
节点.js22.14.0 (中文(简体) )
小时10(促进发展)
类型脚本6.0 (韩语)

仅限无害环境管理。 使用 CJS 解析器的消费者需要使用动态 import() 或迁移到无害环境管理.

可用命令

工作空间( 根)

命令它会做什么
pnpm build构建每个工作空间
pnpm test在监视模式下运行所有测试
pnpm test:run运行所有测试一次
pnpm lint缩小每个工作空间
pnpm type-check类型检查每个工作空间
pnpm format格式为 Pretier

软件包 : @deessejs/fp

命令它会做什么
pnpm --filter @deessejs/fp build构建 dist/
pnpm --filter @deessejs/fp test以监视模式运行 vitest
pnpm --filter @deessejs/fp test:run运行一次vitest
pnpm --filter @deessejs/fp type-checktsc --noEmit
pnpm --filter @deessejs/fp lint运行 ESLint

应用 : web

命令它会做什么
pnpm --filter web dev以 Dev 模式启动文件站点
pnpm --filter web build构建文件站点

兼容性

同伴依赖关系

软件包需求页:1
@deessejs/errors可选, 同行 >=1.0.0如果您需要, 则需要 err() 以接受输入错误。 列为 devDependency 测试.

发动机

外地数值
engines.node>=22.14.0
packageManager[email protected]

项目结构

.
├── packages/
│   └── fp/                # The library — @deessejs/fp on npm
│       ├── src/           # Source code (ESM)
│       ├── dist/          # Build output (gitignored)
│       ├── vitest.config.ts
│       └── tsconfig.build.json
├── apps/
│   └── web/               # Documentation site (Next.js + Fumadocs)
├── docs/
│   ├── internal/          # Engineering plans, runbooks
│   │   ├── product/
│   │   └── versions/
│   └── AGENTS.md          # Agent guidance (CLAUDE.md redirects here)
├── pnpm-workspace.yaml
├── turbo.json             # Turborepo pipelines
├── .changeset/            # Changesets for versioning
└── README.md

出版

发行版通过Refersets + npm Trusted Publishing(OIDC)实现全自动化. 没有长寿 NPM_TOKEN 需要时间.

什麽怎么样
弹出版本添加一个 .changeset/<topic>.md 带有 semver + 描述的文件
打开发布 PRchangesets-version.yml 打开/ 更新“ Version 套件” PR ,从装入到主
发布合并版本包 PR- publish.yml 运行 = 版本突起 = 信任出版 = npm 有来源证明
热补按一个标签 vX.Y.Z 到主 – 热补路径相同的工作流程运行
退后或贬值计划:见 docs/engineering/plans/release-pipeline-github-ui-setup.md

关于管道的全部设计,见 docs/engineering/plans/release-pipeline.md。 。 。 .

结构说明

  • 仅限无害环境管理. 软件包导出ES模块. 消费者使用遗留的 CJS 解析器必须使用动态 import()。 。 。 .
  • 严格的类型. Result.match 要求两个分支; Maybe.getOrElse 需要一个倒计时。 没有部分类型的出逃.
  • 组成优先于继承. 所有原始人通过 pipe 财务报告和审定财务报表 flow没有阶级等级,没有 extends。 。 。 .
  • 零跑时间抽象. 没有装饰,没有反射,没有代理陷阱. DevTools 和 node --prof。 。 。 .
  • 出版前经过烟雾测试. 发布工作流程对已建成的文物进行动态的无害环境管理进口,并核实存在关键出口。 一个已断开的构建在到达 npm 之前失败了发布步骤 .
  • @deessejs/errors 选择进入. 同龄人可以选择 消费者可以选择 @deessejs/fp 被隔离。 一次 @deessejs/errors 添加,每个 err(error) 调用接受打出错误.
  • 认证式错误的真相来源. 这个 apps/app/proxy.ts (在更广泛的deessejs monorepo中,而不是在这个repo中)在代理级别执行电子邮件验证. @ deessejs/ errors (英语) 错误被捕获并翻译为集中的 HTTP 响应 .

捐款

打开一个问题来讨论更大的变化. 对于打字,断开的链接和小修正,公关是受欢迎的.

在提交公关前:

  1. 运行 pnpm --filter @deessejs/fp test:run 财务报告和审定财务报表 pnpm --filter @deessejs/fp lint。 。 。 .
  2. 添加一个 .changeset/<topic>.md 如果更改是用户化的(patch / small / major) .
  3. 更新 docs/internal/product/README.md 如果 API 表面改变.

许可证

麻省理工学院。详情见LICENSE文件.

支助

版本与发布记录

@deessejs/fp 共发布 24 个版本,首次发布于 2026/04/08;过去 12 个月发布了 24 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.1latest2026/10/071 个月前
5.0.02026/10/071 个月前
2.0.12026/10/071 个月前
2.0.02026/10/071 个月前
1.3.02026/08/202 个月前
1.2.92026/08/132 个月前

其他发布通道:canary → 0.0.0-canary-20260806122825。

关于 @deessejs/fp 的常见问题

@deessejs/fp 是什么?

类型脚本的功能编程工具

如何安装 @deessejs/fp?

在项目目录运行 npm install @deessejs/fp,或使用 pnpm add / yarn add / bun add。

@deessejs/fp 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@deessejs/fp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@deessejs/fp 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.14.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@deessejs/fp 可以商用吗?

@deessejs/fp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@deessejs/fp 的下载量有多少?

根据 npm 官方下载统计,@deessejs/fp 在 2026/10/12 – 2026/11/10 这 30 天内被下载 2,888 次,日均约 96 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@deessejs/fp 还在维护吗?

最新版本 5.0.1 发布于 2026/10/07(1 个月前);至今共发布 24 个版本,其中过去 12 个月发布了 24 个;首次发布于 2026/04/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。