UNPKG

reviewed

Version:

Ergonomic, extensible and lightweight validators.

18 lines (17 loc) 509 B
import { Annotated } from "./records"; export interface Valid<T> { valid: true; input: unknown; parsed: T; error: null; } export interface Invalid<T> { valid: false; input: unknown; parsed: null; error: ValidationErrors<T>; } export type ValidationErrors<T> = string | string[] | Annotated<T> | Annotated<T>[]; export type Validated<T> = Valid<T> | Invalid<T>; export type Validator<T> = (input: unknown) => Validated<T>; export type Guard<T> = (input: unknown) => input is T;