# @adbros/typegen 中文文档

规范地址：https://npmcn.com/package/%40adbros/typegen/

版本：3\.1\.1
npm 元数据更新时间：2025-03-04T01:52:50.508Z
中文译文更新时间：2026-11-06T17:25:48.744Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：20.2 kB，12 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：2 个
- 首次发布：2023-07-13T00:33:11.359Z
- 最新版本发布：2025-03-04T01:52:50.283Z
- 近 30 天下载量：2597（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 0 个）

## 中文简介

OpenAPI Docs 中 TypeScript 类型的简单生成器

## 安装

```sh
npm install @adbros/typegen
```

也可以使用：`pnpm add @adbros/typegen`、`yarn add @adbros/typegen`、`bun add @adbros/typegen`

## README

# 类型

OpenAPI Docs的简单生成器 TypeScript 类型 .

## 安装

-   安装国家预防机制软件包: `npm install --save-dev @adbros/typegen`。 。 。 .
-   创建一个 `typegen.config.mjs` 文件并导出一个有效的配置对象。 见 _配置_ (下)详.

## 使用量

OpenAPI doc 每次更改, 运行 `npx typegen` 包含 `typegen.config.mjs`。 。 。 .

## 配置

这个 `typegen.config.mjs` 文件在运行时应在当前工作目录中显示 `typegen` 函数。 (从总体上讲,它最符合逻辑的是在项目的根目录中 -- -- 旁边是 `package.json`, (中文(简体) ), `tsconfig.json`(见a/c.5/49/70,附件).

配置对象导出自 `typegen.config.mjs` (使用无害环境管理默认导出)应具有以下特性:

-   `inputDoc` **(必须)** -- 包含输入路径的字符串 _OpenAPI 3.0.x 打开API 3.0.x_ 医生.
-   `outputDir` **(必须)** -- 包含输出目录路径的字符串.
-   `hooks` - 说吧 包含方便真菌的可选儿童配置对象,在类型生成本身之前/之后使用. 这两种功能都是可选的。 两者皆以零辩相取. 两者都可能还回一个承诺;程序的执行会被阻止,直到承诺解决. 两者都可能抛出或还回最终被否决的承诺,在这种情况下,程序将以非零退出代码提前终止.
    -   `before` -- 在输入文件装入前已调用 。 例如用于从外部来源取取doc,从其他数据取取取doc,在doc上进行自定义验证(并投掷/拒绝无法防止类型生成本身)等.
    -   `after` -- 在类型生成完成并写入文件后调用. 有用, 例如用于自定义生成文件的后处理 .
-   `endpoints` - 说吧 一个可选的儿童配置对象,包含与渲染端点相关的选项,作为任意的TypeScript构造. 如果没有给出, `endpoints.ts` 完全没有生成。 如果给它,它 **必须包含**数字 :
    -   `renderEach` - 一个函数,要求每个端点(即每个路径方法对),即将关于指定端点的现有信息映射到包含任意类型脚本代码的字符串上. 如果有的话 [无效](https://developer.mozilla.org/en-US/docs/Glossary/Nullish) 值从函数返回,而不是输出中排除给定的终点。 该函数总是用单个参数调用 -- -- 一个包含以下属性的对象:
        -   `path` (单位:千美元)`string`\-- 输入文件所指定的路径;
        -   `method` (单位:千美元)`string`)- 小写中HTTP方法的名称,例如. `post`· ;
        -   `pathType` (单位:千美元)`string`)- 描述路径包括路径参数的字符串字面类型或模板字面类型,例如. `` `/customer/${number}/invoices` ``· ;
        -   `requestType` (单位:千美元)`string`) --请求正文的类型,例如. `Invoice`· ;
        -   `responseType` (单位:千美元)`string`) -- 状态代码响应机构的类型 `200`,比如说. `{ invoices: Invoice[]; totalCount: number }`· ;
        -   `paramsType` (单位:千美元)`string`)- 描述对象的类型,其中每个属性对应端点接受的单个查询参数,例如. `GetInvoicesParams` (定义于 `params.ts` 例如,《公约》第2条第1款(a)项. `{ limit: number; offset: number }`(三);
        -   `paramsExpected` (单位:千美元)`boolean`) --是否至少有一个查询参数被终点接受;
        -   `paramsRequired` (单位:千美元)`boolean`) -- 终点是否至少需要一个查询参数;
        -   `bodyExpected` (单位:千美元)`boolean`\-- -- 终点是否期望请求体;
        -   `bodyReturned` (单位:千美元)`boolean`) -- 端点是否返回每个响应中带有状态代码的正文 `200`。 。 。 .
    -   `renderModule` -- 绘制压缩输出的函数 `renderEach` 调用包含最终 TypeScript 模块的字符串。 独有财产的物体 `content`。 。 。 .

### 示例

以下配置定义了有效子类型的生成 [阿克索斯语Name](https://axios-http.com/) 例如,只允许使用超载方法签名调用现有端点。 这是有用的,因为:

-   对不存在的终点的呼声不予批准;
-   执行正确的请求机构/参数;
-   返回类型 -- -- 对应于匹配端点的响应类型 -- -- 每次有效呼叫都会自动推断出.

```js
export default {
  inputDoc: 'path/to/openapi.yaml',
  outputDir: 'path/to/output/directory'
  endpoints: {
    renderModule: ({ content }) => `export type Api = { ${content} };`,
    renderEach: ({
      method,
      pathType,
      requestType,
      responseType,
      paramsType,
      paramsExpected,
      paramsRequired,
    }) => {
      switch (method) {
        case 'get':
          return paramsExpected
            ? `${method}(
              path: ${pathType},
              config${paramsRequired ? '' : '?'}:
                { params: ${paramsType} },
            ): Promise<{ data: ${responseType} }>;`
            : `${method}(
              path: ${pathType},
            ): Promise<{ data: ${responseType} }>;`;
        case 'post':
        case 'put':
          return `${method}(
            path: ${pathType},
            body: ${requestType},
          ): Promise<{ data: ${responseType} }>;`;
        default:
          return `${method}(
            path: ${pathType},
          ): Promise<{ data: ${responseType} }>;`;
      }
    },
  },
};
```

## 常见问题

### @adbros/typegen 是什么？

OpenAPI Docs 中 TypeScript 类型的简单生成器

### 如何安装 @adbros/typegen？

在项目目录运行 npm install @adbros/typegen，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 typegen，可以用 npx typegen 直接运行。

### @adbros/typegen 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/adbros\_\_typegen 是否存在。

### @adbros/typegen 支持 ESM 还是 CommonJS？

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

### @adbros/typegen 可以商用吗？

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

### @adbros/typegen 的下载量有多少？

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

### @adbros/typegen 还在维护吗？

最新版本 3\.1\.1 发布于 2025/03/04（1\.7 年前）；至今共发布 12 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/07/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

