# @deessejs/errors 中文文档

规范地址：https://npmcn.com/package/%40deessejs/errors/

版本：2\.0\.0
npm 元数据更新时间：2026-10-09T13:39:18.443Z
中文译文更新时间：2026-11-12T06:21:45.737Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40deessejs/errors
原文对照：https://npmcn.com/package/%40deessejs/errors/?lang=original
项目主页：https://errors.deessejs.com/
源码仓库：https://github.com/deessejs/errors

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：81.5 kB，29 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.14\.0
- 运行依赖：1 个
- 首次发布：2026-06-01T10:26:47.125Z
- 最新版本发布：2026-10-09T13:39:18.029Z
- 近 30 天下载量：2785（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 8 个）

## 中文简介

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

## 安装

```sh
npm install @deessejs/errors
```

也可以使用：`pnpm add @deessejs/errors`、`yarn add @deessejs/errors`、`bun add @deessejs/errors`

## README

# @ deessejs/ errors (英语)

[![npm](https://img.shields.io/npm/v/@deessejs/errors)](https://www.npmjs.com/package/@deessejs/errors) [![TypeScript](https://img.shields.io/badge/typescript-%E2%9A%99%EF%B8%8F-blue)](https://www.typescriptlang.org/) [![CI](https://img.shields.io/github/actions/workflow/status/deessejs/errors/ci.yml?label=CI)](https://github.com/deessejs/errors/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://npmcn.com/package/%40deessejs/errors/LICENSE)

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

> **兄弟姐妹项目:** [`@deessejs/fp`](https://github.com/deessejs/fp) 提供 `Result` 财务报告和审定财务报表 `Try` 本地融合类型 [`@deessejs/errors`](https://github.com/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`](https://github.com/deessejs/fp) 融合 | `Result`编号 :`Try` 接受 `ErrorInstance` 直接说. | 类型安全出错管线由端到端,不设弦-error脚枪. |

## 安装

```bash
npm install @deessejs/errors
```

[`@deessejs/fp`](https://github.com/deessejs/fp) 是可选的 - 如果您想要作曲, 请安装它 `Result`编号 :`Try` 类型 `ErrorInstance`。 。 。 .

## 使用量

```typescript
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-check` | `tsc --noEmit` |
| `pnpm lint` | 运行 ESLint |

## 捐款

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

在提交公关前:

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

## 许可证

[麻省理工学院](https://npmcn.com/package/%40deessejs/errors/LICENSE)。详情见LICENSE文件.

## 鸣谢

README 版式基于 [解剖/包装-模版](https://github.com/deessejs/package-template) 并借用其结构 [中学/小学](https://github.com/deessejs/fp),适合 `@deessejs/errors` API表面.

## 常见问题

### @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 和提交记录判断。

