Improved Recursive cloner implementation to preserve null state of data

This commit is contained in:
Dev 2024-06-10 18:25:58 +01:00
parent 3341faacdf
commit 53c76a098f

View File

@ -16,6 +16,9 @@ export class RecursiveCloner implements ICloner
public clone<T>(obj: T): T public clone<T>(obj: T): T
{ {
// if null or undefined return it as is
if (obj === null || obj === undefined)
return obj;
const typeOfObj = typeof obj; const typeOfObj = typeof obj;
// no need to clone these types, they are primitives // no need to clone these types, they are primitives
if (RecursiveCloner.primitives.has(typeOfObj)) if (RecursiveCloner.primitives.has(typeOfObj))
@ -39,7 +42,7 @@ export class RecursiveCloner implements ICloner
// This fixes an issue where null arrays were incorrectly being converted to empty objects // This fixes an issue where null arrays were incorrectly being converted to empty objects
if (obj[propOf1] === null || obj[propOf1] === undefined) if (obj[propOf1] === null || obj[propOf1] === undefined)
{ {
newObj[propOf1.toString()] = undefined; newObj[propOf1.toString()] = obj[propOf1];
continue; continue;
} }