@pivanov/utils
Version:
A focused collection of TypeScript utilities for modern web development
22 lines (21 loc) • 794 B
TypeScript
/**
* Deeply compares two values for structural equality.
*
* Supports: primitives (with NaN-equals-NaN), Arrays, Sets, Maps, Dates,
* RegExp (source + flags), Errors (name + message), TypedArrays,
* ArrayBuffer/DataView (byte-wise), and plain objects. Handles circular
* references via cycle tracking.
*
* Sets with non-primitive members use order-independent deep comparison
* (O(n²) worst case).
*
* @example
* ```ts
* isEqual({ a: 1, b: 2 }, { b: 2, a: 1 }); // true
* isEqual([1, 2, 3], [1, 2, 3]); // true
* isEqual(new Set([{ id: 1 }]), new Set([{ id: 1 }])); // true
* isEqual(/foo/gi, /foo/gi); // true
* isEqual(new Uint8Array([1, 2]), new Uint8Array([1, 2])); // true
* ```
*/
export declare const isEqual: <T, K>(obj: T | T[], objToCompare: K | K[]) => boolean;