@automapper/classes

中文文档
9.0.2发布于 2026/07/17MITTypeScriptES Module零依赖近 30 天下载 34.1万

自动Mapper 类型Script 类策略

中文使用文档
文档目录4 节
  1. 安装
  2. peerDependencies
  3. 使用量
  4. 自定义

@automapper/ 类

这是官方策略 @automapper tS/ES6级

安装

npm i @automapper/classes

或带有 yarn数字 :

yarn add @automapper/classes

peerDependencies

@automapper/classes 取决于 @automapper/core 财务报告和审定财务报表 reflect-metadata。 。 。 .

npm i @automapper/core reflect-metadata

或带有 yarn数字 :

yarn add @automapper/core reflect-metadata

使用量

@automapper/classes 提供 classes 作为 MappingStrategyInitializer。通过 classes() 改为 createMapper 创建 (单位:千美元) Mapper 用于 classes 战略.

import { classes, AutoMap } from '@automapper/classes';
import { createMapper, createMap, forMember, mapFrom } from '@automapper/core';

const mapper = createMapper({
  ...,
  strategyInitializer: classes()
});

class User {
    @AutoMap()
    firstName: string;
    @AutoMap()
    lastName: string;

    constructor(firstName: string, lastName: string) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
}

class UserDto {
  @AutoMap()
  firstName: string;
  @AutoMap()
  lastName: string;
  @AutoMap()
  fullName: string;
}

createMap(
    mapper,
    User,
    UserDto,
    forMember(
        d => d.fullName,
        mapFrom(s => s.firstName + ' ' + s.lastName)
    )
);
mapper.map(new User('Auto', 'Mapper'), User, UserDto);
// UserDto { firstName: 'Auto', lastName: 'Mapper', fullName: 'Auto Mapper' }

自定义

classes() 接受两个可选参数:

  • destinationConstructor:如何构建 Destination。这是默认 destinationConstructor 将用于 mapper.mapXXXX() 操作. DestinationConstructor 是具有下列签名的函数:

    export type DestinationConstructor<
        TSource extends Dictionary<TSource> = any,
        TDestination extends Dictionary<TDestination> = any
    > = (
        sourceObject: TSource, // the sourceObject used to map to the Destination
        destinationIdentifier: MetadataIdentifier<TDestination> // the Destination model
    ) => TDestination;
    
    // example
    mapper.map(user, User, UserDto);
    // sourceObject will be "user"
    // destinationIdentifier will be "UserDto"
    // This allows you to provide a default constructor that can be based on the Source object data
    
    • 有办法提供一次性习俗 destinationConstructor 任何给定的 Mapping 当你运行时 createMap。更多信息 构造
  • applyMetadata:战略应如何将元数据应用于模型。 默认对大多数情况都有效,但是如果您想要定制,您可以. ApplyMetadata 是具有下列签名的函数:

    export type ApplyMetadataFn = <TModel extends Dictionary<TModel>>(
        model: MetadataIdentifier<TModel>
    ) => TModel;
    
    export type ApplyMetadata = (
        strategy: MappingStrategy<MetadataIdentifier>
    ) => ApplyMetadataFn;
    
    // for example
    const customApplyMetadata: ApplyMetadata = (strategy: MappingStrategy) => {
        // strategy contains the Mapper which stores all the models' metadata
        return (model) => {
            // based on this model, you can extract the metadata and do as you like
    
            return anObjectThatHasTheMetadataApplied; // { foo: undefined, bar: undefined }
        };
    };
    

更多信息,请访问 类文档

版本与发布记录

@automapper/classes 共发布 146 个版本,首次发布于 2021/01/04;过去 12 个月发布了 5 个版本。

版本发布日期距今
9.0.2latest2026/07/173 个月前
9.0.12026/07/163 个月前
9.0.02026/07/163 个月前
9.0.0-alpha.1beta2026/06/244 个月前
9.0.0-alpha.02026/06/244 个月前
8.8.12024/01/232 年前

关于 @automapper/classes 的常见问题

@automapper/classes 是什么?

自动Mapper 类型Script 类策略

如何安装 @automapper/classes?

在项目目录运行 npm install @automapper/classes,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@automapper/core(^9.0.2)、reflect-metadata(^0.1.14 || ^0.2.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@automapper/classes 支持 TypeScript 吗?

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

@automapper/classes 支持 ESM 还是 CommonJS?

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

@automapper/classes 需要什么版本的 Node.js?

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

@automapper/classes 可以商用吗?

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

@automapper/classes 的下载量有多少?

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

@automapper/classes 还在维护吗?

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