import type { ReadonlyRecord } from "../Record"; import type { Guard } from "./Guard"; /* * ------------------------------------------- * Guard Primitives * ------------------------------------------- */ /** * @category Primitives * @since 1.0.0 */ export const string: Guard = { is: (i): i is string => typeof i === "string" }; /** * Note: `NaN` is excluded * * @category Primitives * @since 1.0.0 */ export const number: Guard = { is: (i): i is number => typeof i === "number" && !isNaN(i) }; /** * @category Primitives * @since 1.0.0 */ export const boolean: Guard = { is: (i): i is boolean => typeof i === "boolean" }; /** * @category Primitives * @since 1.0.0 */ export const UnknownArray: Guard> = { is: Array.isArray }; /** * @category Primitives * @since 1.0.0 */ export const UnknownRecord: Guard> = { is: (i): i is Record => Object.prototype.toString.call(i) === "[object Object]" };