Function: match()
Call Signature
match<
T
,E
,A
>(matcher
,result
):A
Performs the same basic functionality as unwrapOrElse
, but instead of simply unwrapping the value if it is Ok
and applying a value to generate the same default type if it is Err
, lets you supply functions which may transform the wrapped type if it is Ok
or get a default value for Err
.
This is kind of like a poor man's version of pattern matching, which JavaScript currently lacks.
Instead of code like this:
import Result, { isOk, match } from 'true-myth/result';
const logValue = (mightBeANumber: Result<number, string>) => {
console.log(
mightBeANumber.isOk
? mightBeANumber.value.toString()
: `There was an error: ${unsafelyGetErr(mightBeANumber)}`
);
};
...we can write code like this:
import Result, { match } from 'true-myth/result';
const logValue = (mightBeANumber: Result<number, string>) => {
const value = match(
{
Ok: n => n.toString(),
Err: e => `There was an error: ${e}`,
},
mightBeANumber
);
console.log(value);
};
This is slightly longer to write, but clearer: the more complex the resulting expression, the hairer it is to understand the ternary. Thus, this is especially convenient for times when there is a complex result, e.g. when rendering part of a React component inline in JSX/TSX.
Type Parameters
T
T
E
E
A
A
Parameters
matcher
Matcher
<T
, E
, A
>
A lightweight object defining what to do in the case of each variant.
result
Result
<T
, E
>
The result
instance to check.
Returns
A
Call Signature
match<
T
,E
,A
>(matcher
): (result
) =>A
Performs the same basic functionality as unwrapOrElse
, but instead of simply unwrapping the value if it is Ok
and applying a value to generate the same default type if it is Err
, lets you supply functions which may transform the wrapped type if it is Ok
or get a default value for Err
.
This is kind of like a poor man's version of pattern matching, which JavaScript currently lacks.
Instead of code like this:
import Result, { isOk, match } from 'true-myth/result';
const logValue = (mightBeANumber: Result<number, string>) => {
console.log(
mightBeANumber.isOk
? mightBeANumber.value.toString()
: `There was an error: ${unsafelyGetErr(mightBeANumber)}`
);
};
...we can write code like this:
import Result, { match } from 'true-myth/result';
const logValue = (mightBeANumber: Result<number, string>) => {
const value = match(
{
Ok: n => n.toString(),
Err: e => `There was an error: ${e}`,
},
mightBeANumber
);
console.log(value);
};
This is slightly longer to write, but clearer: the more complex the resulting expression, the hairer it is to understand the ternary. Thus, this is especially convenient for times when there is a complex result, e.g. when rendering part of a React component inline in JSX/TSX.
Type Parameters
T
T
E
E
A
A
Parameters
matcher
Matcher
<T
, E
, A
>
A lightweight object defining what to do in the case of each variant.
Returns
(
result
):A
Parameters
result
Result
<T
, E
>
Returns
A