export function shallowEqual>( a: T, b: T, ): boolean { if (Object.is(a, b)) return true if (!a || !b) return false const aKeys = Object.keys(a) const bKeys = Object.keys(b) if (aKeys.length !== bKeys.length) return false for (let i = 0; i < aKeys.length; i++) { const key = aKeys[i] if ( !Object.prototype.hasOwnProperty.call(b, key!) || !Object.is(a[key!], b[key!]) ) { return false } } return true }