# @ddd-framework/dto 中文文档

规范地址：https://npmcn.com/package/%40ddd-framework/dto/

版本：1\.0\.3
npm 元数据更新时间：2024-08-07T04:40:17.318Z
中文译文更新时间：2026-11-11T18:02:12.648Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：10.4 kB，10 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：@ddd-framework/collections ^1\.0\.0，@ddd-framework/core ^1\.0\.0
- 首次发布：2023-07-16T06:21:34.560Z
- 最新版本发布：2024-08-07T04:40:17.122Z
- 近 30 天下载量：29771（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

> `@ddd-framework/dto` 是一个在综合 `@ddd-framework` 框架。 它为数据传输对象(DTO)提供了一类别名来方便以数据为中心的操作和对象/类的初始化器.

## 安装

```sh
npm install @ddd-framework/dto
```

也可以使用：`pnpm add @ddd-framework/dto`、`yarn add @ddd-framework/dto`、`bun add @ddd-framework/dto`

## README

# @ddd-framework/dto (英语)

> `@ddd-framework/dto` 是一个在综合 `@ddd-framework` 框架。 它为数据传输对象(DTO)提供了一类别名来方便以数据为中心的操作和对象/类的初始化器.

## 说明

这个 `@ddd-framework/dto` 软件包扩展函数 `@ddd-framework` 提供一种别名, `DataTransferObject<T>`,使开发者能够将通用类型深刻地转换成动能类型。 这对在节点Js应用程序中的DDD背景下与数据传输对象(DTO)合作特别有用.

## 文档

详细信息 `@ddd-framework/dto`请参考 [正式文件](https://rmolinamir.github.io/ddd-framework/modules/dto.html)。 。 。 .

## 安装

要安装 `@ddd-framework/dto`,确保您具备下列先决条件:

-   节点.js 稳定版本
-   [小时](https://pnpm.io/)

一旦设置了先决条件,就运行以下命令:

```shell
$ pnpm i @ddd-framework/dto
...
```

这将安装 `@ddd-framework/dto` 软件包及其依赖性.

## 类型别名

### 数据传输对象<T>

这个 `DataTransferObject<T>` 类型别名允许将通用类型深度转换为动能类型。 它排除了任何方法并侧重于以数据为中心的操作或对象/类初始化器. 该类型别名对于数据传输对象(DTO)的工作特别有用.

```typescript
type DataTransferObject<T> = T extends FunctionType
  ? never
  : Extract<T, undefined> extends never
  ? Serialize<T>
  : Serialize<T> | undefined;
```

通过使用 `DataTransferObject<T>` 类型别名 `@ddd-framework/dto` 软件包,开发者可以以数据为中心有效与DTO合作,简化对象/类初始化和数据操作.

## 使用量

用于 `@ddd-framework/dto`,导入 `DataTransferObject` 类型中的别名。 例如:

```typescript
import { DataTransferObject } from '@ddd-framework/dto';

interface User {
  id: string;
  name: string;
  email: string;
}

// Usage example
const user: DataTransferObject<User> = {
  id: '123',
  name: 'John Doe',
  email: 'john.doe@example.com',
};

console.log(user); // Output: { id: '123', name: 'John Doe', email: 'john.doe@example.com' }
```

```typescript
import { DataTransferObject } from '@ddd-framework/dto';

const money = new Money(10, new CurrencyDetails('USD', '$', 2, true));
const dto = serialize(money);
expect(dto.amount as number).toBeTruthy();
expect(dto.currency.currencyCode as string).toBeTruthy();
```

```typescript
import { DataTransferObject } from '@ddd-framework/dto';

const order = new Order({
  id: new OrderId(faker.string.uuid()),
  status: 'PROCESSING',
  createdAt: DateValue.now(),
  updatedAt: DateValue.null
});

const dto = serialize(order);

order.id as DomainPrimitive<string>;
expect(dto.id as string).toBeTruthy();

order.status as string;
expect(dto.status as string).toBeTruthy();

order.createdAt as DateValue;
expect(dto.createdAt as string).toBeTruthy();

order.updatedAt as DateValue | undefined;
expect(dto.updatedAt as string | undefined).toBeTruthy();
```

通过使用 `DataTransferObject` 类型别名 `@ddd-framework/dto` 软件包,开发者可以将一个通用类型深刻地转换为动能类型,方便DTOs在其Node.js应用中使用.

## 许可证

`@ddd-framework/dto` 以麻省理工学院的许可证发放。 随你随意定制吧 更适合你的需要.

## 常见问题

### @ddd-framework/dto 是什么？

@ddd-framework/dto 是一个在综合 @ddd-framework 框架。 它为数据传输对象\(DTO\)提供了一类别名来方便以数据为中心的操作和对象/类的初始化器\.

### 如何安装 @ddd-framework/dto？

在项目目录运行 npm install @ddd-framework/dto，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@ddd-framework/collections（^1\.0\.0）、@ddd-framework/core（^1\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ddd-framework/dto 支持 TypeScript 吗？

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

### @ddd-framework/dto 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @ddd-framework/dto 可以商用吗？

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

### @ddd-framework/dto 的下载量有多少？

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

### @ddd-framework/dto 还在维护吗？

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

