@deessejs/errors

中文文档
2.0.0发布于 2026/10/09MITTypeScriptES Module构建来源已验证近 30 天下载 2785

轻量级,类型安全的错误处理TypeScript——Python风格的特例链式,分级继承,以及丰富的错误语义. 基于函数的API,仅限无害环境管理,与@deessejs/fp的一等互操作性设计.

中文使用文档
文档目录9 节
  1. 包含的内容
  2. 安装
  3. 使用量
  4. 为什么这个图书馆
  5. 引擎兼容性
  6. 可用命令
  7. 捐款
  8. 许可证
  9. 鸣谢

@ deessejs/ errors (英语)

npm TypeScript CI License: MIT

轻量级,类型安全的错误处理,用于TypeScript——Python风格. 基于函数的API,例外连锁,分级继承,和丰富的出错语义. 仅限无害环境管理,为一级互操作性设计 @deessejs/fp'结果并尝试.

兄弟姐妹项目: @deessejs/fp 提供 Result 财务报告和审定财务报表 Try 本地融合类型 @deessejs/errors 错误工厂。 将它们安装在一起,以获得一个没有胶合码的完整错误处理故事.


包含的内容

层你得到的东西为什么这很重要
error()定义带有名称、消息模板、字段和继承的错误工厂.Python 风格的错误定义不包含类.
.from() 连锁由于链条通过 .from() + 键 causes() 转过身来.将错误连接在一起,同时保留整个链条上下文.
单一或多重继承inherits: 接受工厂或阵列.组织匹配您域的错误等级 .
is() 类型检查具有遗产支持的运行时间和类型安全分类器.毫不含糊地歧视错误 instanceof。 。 。 .
.addNote()在错误实例中附加运行时间上下文 .Python 3.11风格的笔记 (PEP 678),用于Brack-freadcrumbs调试.
信件模板{field} 占位符为 :upper, (中文(简体) ), :lower, (中文(简体) ), :json 修饰相.施工时结构化字段的可读信息.
标准Schema 字段接受Zod / Valibot / ArkType 计划.验证每个错误实例的结构化数据,没有手卷式的警卫.
raise()平庸地投出帮助者.收缩型( N)never(中文(简体) ) raise(err) 用于控制流可读性.
@deessejs/fp 融合Result编号 :Try 接受 ErrorInstance 直接说.类型安全出错管线由端到端,不设弦-error脚枪.

安装

npm install @deessejs/errors

@deessejs/fp 是可选的 - 如果您想要作曲, 请安装它 Result编号 :Try 类型 ErrorInstance。 。 。 .

使用量

import { z } from 'zod';
import { error, raise, is, causes } from '@deessejs/errors';

// Define a factory with a Standard Schema. The `message` is a
// function that receives the schema's *output* (post-transform).
// The factory's call signature requires the schema's *input*,
// so callers can supply the validated shape directly.
const ValidationError = error({
  name: 'ValidationError',
  fields: z.object({
    field: z.string(),
    reason: z.string(),
  }),
  message: (data) => `Field "${data.field}" is invalid: ${data.reason}`,
});

// Construct a typed error. The schema validates the input.
const err = ValidationError({ field: 'email', reason: 'invalid format' });
// err.message === 'Field "email" is invalid: invalid format'

// Chain a cause. .from() replaces the previous cause; the
// previous cause is reachable through its own .cause link.
const cause = error({ name: 'NetworkError' })();
err.from(cause);

// Throw it
raise(err);

// Later, type-check and walk the chain
is(err, ValidationError); // true
causes(err); // [cause]

为什么这个图书馆

  • 默认很简单. 没有阶级等级,没有装饰者在反省之中.
  • 仅限无害环境管理. 现代包装,没有CJS shim,没有 module编号 :main 重叠.
  • 最小运行时间. 唯一的运行时间依赖是 @standard-schema/spec。 。 。 .
  • 类型脚本一等. 严格类型, 不 any 出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出 JSDoc在每个公共符号上.
  • 真正的测试. 具有类型级和运行时间测试的活性测试,包括因子链转录.

引擎兼容性

运行时间需求
节点.js>=22.14.0
小时10 促进发展
类型脚本5.4 或以后(公众) error() 超载使用 NoInfer<T>(中文(简体) )

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

可用命令

命令它会做什么
pnpm build构建 dist/ (单位:千美元)tsc -p tsconfig.build.json(中文(简体) )
pnpm test以监视模式运行 vitest
pnpm test:run运行一次vitest
pnpm type-checktsc --noEmit
pnpm lint运行 ESLint

捐款

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

在提交公关前:

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

许可证

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

鸣谢

README 版式基于 解剖/包装-模版 并借用其结构 中学/小学,适合 @deessejs/errors API表面.

版本与发布记录

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

版本发布日期距今
2.0.0latest2026/10/091 个月前
1.4.02026/08/053 个月前
1.3.32026/08/053 个月前
1.3.22026/08/043 个月前
1.2.22026/08/033 个月前
1.1.12026/06/055 个月前

关于 @deessejs/errors 的常见问题

@deessejs/errors 是什么?

轻量级,类型安全的错误处理TypeScript——Python风格的特例链式,分级继承,以及丰富的错误语义. 基于函数的API,仅限无害环境管理,与@deessejs/fp的一等互操作性设计.

如何安装 @deessejs/errors?

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

@deessejs/errors 支持 TypeScript 吗?

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

@deessejs/errors 支持 ESM 还是 CommonJS?

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

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

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

@deessejs/errors 可以商用吗?

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

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

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

@deessejs/errors 还在维护吗?

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