diff --git a/packages/common/src/objects/deep-set.ts b/packages/common/src/objects/deep-set.ts index 29b0ab48071..7ebe566b4e3 100644 --- a/packages/common/src/objects/deep-set.ts +++ b/packages/common/src/objects/deep-set.ts @@ -15,7 +15,7 @@ export function deepSet( let worker = target; const lastIdx = parts.length - 1; parts.forEach((p, idx) => { - if (!worker.hasOwnProperty(p) || worker[p] === null) { + if (!worker.hasOwnProperty(p) || worker[p] == null) { if (idx === lastIdx) { worker[p] = value; } else { diff --git a/packages/common/test/objects/set-prop.test.ts b/packages/common/test/objects/set-prop.test.ts index c93c1f73f2b..fbdcddf4291 100644 --- a/packages/common/test/objects/set-prop.test.ts +++ b/packages/common/test/objects/set-prop.test.ts @@ -18,4 +18,10 @@ describe("setProp", () => { setProp(["foo", "bar"], true, obj); expect(obj).toEqual({ foo: { bar: true } }); }); + + it("handles intermediary properties that are explicitly set to undefined", () => { + const obj = { foo: undefined as any }; + setProp("foo.bar", true, obj); + expect(obj).toEqual({ foo: { bar: true } }); + }); });