nested.ts
1 export function getNestedValue(obj: Record<string, unknown>, path: string): unknown { 2 const parts = path.split("."); 3 let cur: unknown = obj; 4 for (const p of parts) { 5 if (cur == null || typeof cur !== "object") return undefined; 6 cur = (cur as Record<string, unknown>)[p]; 7 } 8 return cur; 9 } 10 11 export function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown> { 12 const clone = structuredClone(obj); 13 const parts = path.split("."); 14 let cur: Record<string, unknown> = clone; 15 for (let i = 0; i < parts.length - 1; i++) { 16 if (cur[parts[i]] == null || typeof cur[parts[i]] !== "object") { 17 cur[parts[i]] = {}; 18 } 19 cur = cur[parts[i]] as Record<string, unknown>; 20 } 21 cur[parts[parts.length - 1]] = value; 22 return clone; 23 }