API reference › @evolu/common › Eq › eqData
function eqData<Actual, Expected>(
actual: Actual,
expected: Expected,
...dataError: EqDataError<Actual | Expected>
): boolean;
Defined in: packages/common/src/Eq.ts:255
Compares two Data values.
Primitive values use SameValueZero, so NaN equals itself and 0 equals
-0. Arrays and Object properties are ordered and keyed respectively. Sets
and Maps compare their elements and entries without regard to insertion
order. Dates compare their time values, while Uint8Arrays compare their
bytes. Cyclic and shared data graphs are supported.
The compile-time validation recursively accepts ordinary interfaces whose properties consist only of Data. Runtime representation details are trusted; use the Data Type at an unknown boundary.
Example
import { assertTrue, eqData } from "@evolu/common";
interface User {
readonly name: string;
readonly roles: ReadonlySet<string>;
}
const first: User = { name: "Ada", roles: new Set(["admin", "author"]) };
const second: User = {
name: "Ada",
roles: new Set(["author", "admin"]),
};
assertTrue(eqData(first, second));