diff --git a/src/TransformOperationExecutor.ts b/src/TransformOperationExecutor.ts index 0533f03df..186f9778d 100644 --- a/src/TransformOperationExecutor.ts +++ b/src/TransformOperationExecutor.ts @@ -104,6 +104,7 @@ export class TransformOperationExecutor { return String(value); } else if (targetType === Number && !isMap) { if (value === null || value === undefined) return value; + if (value === '') return null; return Number(value); } else if (targetType === Boolean && !isMap) { if (value === null || value === undefined) return value; diff --git a/test/functional/implicit-type-declarations.spec.ts b/test/functional/implicit-type-declarations.spec.ts index 889565512..aab5abb9e 100644 --- a/test/functional/implicit-type-declarations.spec.ts +++ b/test/functional/implicit-type-declarations.spec.ts @@ -13,6 +13,9 @@ describe('implicit type conversion', () => { @Expose() readonly implicitTypeString: string; + + @Expose() + readonly implicitTypeEmptyNumber: number; } const result1: SimpleExample = plainToInstance( @@ -20,6 +23,7 @@ describe('implicit type conversion', () => { { implicitTypeNumber: '100', implicitTypeString: 133123, + implicitTypeEmptyNumber: '', }, { enableImplicitConversion: true } ); @@ -29,12 +33,13 @@ describe('implicit type conversion', () => { { implicitTypeNumber: '100', implicitTypeString: 133123, + implicitTypeEmptyNumber: '', }, { enableImplicitConversion: false } ); - expect(result1).toEqual({ implicitTypeNumber: 100, implicitTypeString: '133123' }); - expect(result2).toEqual({ implicitTypeNumber: '100', implicitTypeString: 133123 }); + expect(result1).toEqual({ implicitTypeNumber: 100, implicitTypeString: '133123', implicitTypeEmptyNumber: null }); + expect(result2).toEqual({ implicitTypeNumber: '100', implicitTypeString: 133123, implicitTypeEmptyNumber: '' }); }); });