我正在使用类转换器的 plainToInstance 从其他值中获取一些值。我遇到的问题的最小示例如以下代码所示:
class MyClass {
readonly attempts: number = 1;
readonly totalDistance: number = 1;
@Transform(({ obj }) => new Decimal(obj.totalDistance).div(obj.attempts))
readonly distancePerAttempt: Decimal = new Decimal(0);
}
并以这种方式使用 MyClass:
plainToInstance(
MyClass,
{
attempts: 3,
totalDistance: 30,
},
);
我得到的错误是:
[Nest] 51628 - 07/29/2023, 10:44:03 PM ERROR [AllExceptionsFilter] Error: [DecimalError] Invalid argument: undefined
at new Decimal (/Users/.../node_modules/@prisma/client/runtime/index.js:30312:13)
at TransformOperationExecutor.transform (/Users/.../node_modules/src/TransformOperationExecutor.ts:160:22)
at TransformOperationExecutor.transform (/Users/.../node_modules/src/TransformOperationExecutor.ts:333:33)
at ClassTransformer.plainToInstance (/Users/.../node_modules/src/ClassTransformer.ts:77:21)
at plainToInstance (/Users/.../node_modules/src/index.ts:84:27)
...
如果我不为 distancePerAttempt 提供默认值,则不会出现错误,但在这种情况下,不会应用@Transform。
任何人都可以确认这是错误,或者告诉我我做错了什么吗?