API reference › @evolu/common › Type › ValidDate
type ValidDate = Date & Brand<"ValidDate">;
Defined in: packages/common/src/Type.ts:4071
A Date with a valid time value.
Rejects an Invalid Date, such as new Date("x"), whose time value is NaN.
Like Date, it is realm-neutral: it reads the time value with
Date.prototype.getTime instead of a method of the value.
A Date is mutable, so calling setTime(NaN) on a validated value breaks its
brand. Use DateIsoFromDate to store a moment and Millis for
time arithmetic.
Example
import {
assertEqual,
assertErr,
assertOk,
assertType,
ValidDate,
type Brand,
} from "@evolu/common";
const date = new Date(0);
assertOk(ValidDate.fromUnknown(date), date);
assertType<ValidDate, Date & Brand<"ValidDate">>();
const invalidDate = new Date("x");
const invalid = ValidDate.fromUnknown(invalidDate);
assertErr(invalid, { type: "ValidDate", value: invalidDate });
assertEqual(ValidDate.formatError(invalid.error), "The Date is invalid.");