const hasOwn = Object.prototype.hasOwnProperty; export function shallowEqual(a: T, b: T): boolean { if (Object.is(a, b)) return true; if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) { return false; } const keysA = Object.keys(a); const keysB = Object.keys(b); if (keysA.length !== keysB.length) return false; for (const key of keysA) { if (!hasOwn.call(b, key) || !Object.is((a as Record)[key], (b as Record)[key])) { return false; } } return true; }