UNPKG

@rbxts/rotype

Version:

Advanced runtime type checking library

19 lines (18 loc) 839 B
import { Ctx } from "./context"; import { Issue } from "./errors"; import { Result } from "./result"; export type Shape = { readonly [k: string]: Schema<any, any>; }; export interface Schema<I, O = I> { kind: string; shape?: Shape; inner?: Schema<any, any>; item?: Schema<any, any>; _parse(data: unknown, ctx: Ctx): Result<O, Issue[]>; } export type InferInput<S> = S extends Schema<infer I, unknown> ? I : never; export type InferOutput<S> = S extends Schema<unknown, infer O> ? O : never; export declare function parse<S extends Schema<any, any>>(schema: S, data: unknown): Result<InferOutput<S>, Issue[]>; export declare function is<S extends Schema<any, any>>(schema: S, data: unknown): data is InferOutput<S>; export declare function CreateTypeOf<T extends keyof CheckableTypes>(typeName: T): () => Schema<T>;