pure-parse
Version:
Strongly typed validation library that decouples type aliases from validation logic
21 lines (20 loc) • 852 B
TypeScript
import { Parser } from './Parser';
/**
* Construct parsers for tuples.
* If the `data` has more elements than expected, the extra elements are omitted from the result.
* @example
* Parse 2D coordinates:
* ```ts
* const parseVector2 = tuple([parseNumber, parseNumber])
* parseVector2([12.5, 45.0]) // -> ParseSuccess<[number, number]>
* ```
* @example
* Declare the type explicitly with type arguments:
* ```ts
* const parseVector2 = tuple<[number, number]>([parseNumber, parseNumber])
* parseVector2([12.5, 45.0]) // -> ParseSuccess<[number, number]>
* ```
* @param parsers an array of parsers. Each parser validates the corresponding element in the data tuple.
* @returns a parser that validates tuples.
*/
export declare const tuple: <T extends readonly [...unknown[]]>(parsers: [...{ [K in keyof T]: Parser<T[K]>; }]) => Parser<T>;