Skip to content

Commit c1805c3

Browse files
committed
safeCloneDeep shoud handle Maps and Sets too
1 parent b77c30a commit c1805c3

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/core/safe-clone-deep.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,24 @@ export function safeCloneDeep<T>(obj: T): T {
2424
return obj.clone();
2525
}
2626

27+
// Handle Maps
28+
if (obj instanceof Map) {
29+
const clonedMap = new Map();
30+
for (const [key, value] of obj.entries()) {
31+
clonedMap.set(key, safeCloneDeep(value));
32+
}
33+
return clonedMap as T;
34+
}
35+
36+
// Handle Sets
37+
if (obj instanceof Set) {
38+
const clonedSet = new Set();
39+
for (const value of obj.values()) {
40+
clonedSet.add(safeCloneDeep(value));
41+
}
42+
return clonedSet as T;
43+
}
44+
2745
// Handle regular objects
2846
const result = {} as T;
2947
for (const key in obj) {

0 commit comments

Comments
 (0)