You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用class-transformer时遭遇TS1240编译错误,求助解决方法

解决class-transformer中TS1240装饰器错误

错误原因

这个TS1240错误是因为TypeScript 5.0+启用了新的Stage 3装饰器标准,而旧版本的class-transformer(如v0.4.x)的@Type装饰器不兼容该语法,导致类型签名不匹配。

解决方法

方法一:升级class-transformer到兼容版本

安装最新版的class-transformer及依赖:

npm install class-transformer@latest reflect-metadata --save

方法二:修改TypeScript配置,禁用新装饰器语法

在项目的tsconfig.json中调整编译选项:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "useDefineForClassFields": false // 禁用新类字段装饰器语法,适配旧版class-transformer
  }
}

验证测试

修改后可以添加以下代码验证功能正常:

const plainData = {
  Projects: [
    { ProjectName: "proj1", ProjectDisplayName: "项目1" },
    { ProjectName: "proj2", ProjectDisplayName: "项目2" }
  ]
};

const rootInstance = plainToClass(Root, plainData);
console.log(rootInstance.Projects[0] instanceof Project); // 输出true表示转换成功

内容的提问来源于stack exchange,提问作者Danno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:04:52