Skip to content

Commit e0289af

Browse files
devuxerdai-shi
andauthored
fix(utils): Fix deepFreeze fails for boolean, number, string (#3018)
* Fix deepFreeze fails for boolean, number, string * Update src/vanilla/utils/freezeAtom.ts * Update src/vanilla/utils/freezeAtom.ts * fix format --------- Co-authored-by: Daishi Kato <[email protected]> Co-authored-by: daishi <[email protected]>
1 parent 5f42e12 commit e0289af

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/vanilla/utils/freezeAtom.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ import type { Atom, WritableAtom } from '../../vanilla.ts'
22

33
const frozenAtoms = new WeakSet<Atom<any>>()
44

5-
const deepFreeze = (obj: unknown) => {
6-
if (typeof obj !== 'object' || obj === null) return
7-
Object.freeze(obj)
8-
const propNames = Object.getOwnPropertyNames(obj)
5+
const deepFreeze = <T>(value: T): T => {
6+
if (typeof value !== 'object' || value === null) {
7+
return value
8+
}
9+
Object.freeze(value)
10+
const propNames = Object.getOwnPropertyNames(value)
911
for (const name of propNames) {
10-
const value = (obj as never)[name]
11-
deepFreeze(value)
12+
deepFreeze((value as never)[name])
1213
}
13-
return obj
14+
return value
1415
}
1516

1617
export function freezeAtom<AtomType extends Atom<unknown>>(

0 commit comments

Comments
 (0)