使用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
相关产品推荐
相关产品推荐

