InfallibleParser()<T>
type InfallibleParser<T>: (data) => ParseSuccess<T>;A parser that always succeeds
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
data | unknown |
Returns
ParseSuccess<T>
OptionalParser()<T>
type OptionalParser<T>: (data) => ParseResult<T | undefined | OmitProperty>;Special parser to check optional values
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
data | unknown |
Returns
ParseResult<T | undefined | OmitProperty>
Parser()<T>
type Parser<T>: (data) => ParseResult<T>;Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
data | unknown |
Returns
ParseResult<T>
RequiredParser()<T>
type RequiredParser<T>: (data) => ParseResult<Exclude<T, OmitProperty>>;A parser that does not represent an optional property.
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type |
|---|---|
data | unknown |
Returns
ParseResult<Exclude<T, OmitProperty>>
UnsuccessfulParser()
type UnsuccessfulParser: (data) => ParseFailure;A parser that always fails
Parameters
| Parameter | Type |
|---|---|
data | unknown |
Returns
chain()
function chain<A, B>(parser, parseSuccess): Parser<B>Transform successful results into either success or failure. This is useful for chaining parsers.
Example
After parsing an array of numbers, ensure it is non-empty:
const parseNonEmptyArray = chain(array(parseNumber), (value) =>
value.length > 0
? success(value)
: failure('Expected non-empty array'),
)Type Parameters
| Type Parameter |
|---|
A |
B |
Parameters
| Parameter | Type | Description |
|---|---|---|
parser | Parser<A> | |
parseSuccess | (value) => ParseResult<B> |
Returns
Parser<B>
map()
function map<A, B>(parser, mapSuccess): Parser<B>Transform the values of successful results.
Example
Transform strings to uppercase
const parseToUpperCase = map(parseString, (str) => str.toUpperCase())
parseToUpperCase('hello') // -> ParseSuccess<'HELLO'>
parseToUpperCase(123) // -> ParseFailureType Parameters
| Type Parameter |
|---|
A |
B |
Parameters
| Parameter | Type | Description |
|---|---|---|
parser | Parser<A> | |
mapSuccess | (value) => B |
Returns
Parser<B>
parserFromGuard()
function parserFromGuard<T>(guard): Parser<T>Construct a parser from a type guard. Tip: construct parsers from scratch for better error messages, and generally more flexibility.
Example
const isUser = objectGuard({
id: isNumber,
name: isString,
})
const parseUser = parserFromGuard(isUser)Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type | Description |
|---|---|---|
guard | Guard<T> |
Returns
Parser<T>
recover()
function recover<A>(parser, parseFailure): Parser<A>Transform failed results into either success or failure. This is useful for error handling.
Example
Fall back to a default value if parsing fails:
const parseCount = recover(
parseNumber,
() => 0
)Type Parameters
| Type Parameter |
|---|
A |
Parameters
| Parameter | Type | Description |
|---|---|---|
parser | Parser<A> | |
parseFailure | (error) => ParseResult<A> |
Returns
Parser<A>
