isResult
Check if a value is a Result tuple
Usage
Check if a value is a Result tuple.
Don’t know what that is? Read the Result section further down.
import * as import _
_ from 'radashi'
import _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([var undefined
undefined, 42]) // => trueimport _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([new var Error: ErrorConstructornew (message?: string) => Error
Error(), var undefined
undefined]) // => true
// Tuple must be of length 2.import _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([new var Error: ErrorConstructornew (message?: string) => Error
Error()]) // => falseimport _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([var undefined
undefined, true, var undefined
undefined]) // => false
// Non-tuple values are false.import _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([]) // => falseimport _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult({}) // => falseimport _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult(null) // => false
// Result tuples cannot have both a value and an error.import _
_.function isResult(value: unknown): value is _.Result<unknown>export isResult
Returns true if the value is a Result tuple.
isResult([new var Error: ErrorConstructornew (message?: string) => Error
Error(), true]) // => falseAlso see the related isResultOk and isResultErr functions.
Types In-Depth
Result
“Results” are tuples of 2 elements (an error and a result value).
- The first element is always the error, or
undefinedif the operation was successful. - The second element is always the result value, unless an error occurred.
- These tuples are represented by the
Result<TResult, TError>type. - A default error type of
Erroris used when no error type is explicitly defined (e.g.Result<string>).
Ok and Err
There are 2 types of result: Ok<TResult> and Err<TError>.
- The
Oktype represents a successful operation. It’s a tuple of[undefined, TResult]. - The
Errtype represents a failed operation. It’s a tuple of[TError, undefined].
The names “Ok” and “Err” are inspired by Rust’s std::result module.
To check for an Ok result, do this:
declare const const value: unknown
value: unknown
if (function isResult(value: unknown): value is Result<unknown>
Returns true if the value is a Result tuple.
isResult(const value: unknown
value) && const value: Result<unknown, Error>
value[0] == null) { const value: Ok<unknown>
value // <-- now an Ok<unknown> type const value: Ok<unknown>
value[1] // <-- This is the resulting value!}To check for an Err result, do this:
declare const const value: unknown
value: unknown
if (function isResult(value: unknown): value is Result<unknown>
Returns true if the value is a Result tuple.
isResult(const value: unknown
value) && const value: Result<unknown, Error>
value[0] != null) { const value: Err<Error>
value // <-- now an Err<Error> type const value: Err<Error>
value[0] // <-- This is the error!}You can also use the isResultOk and isResultErr functions to check for Ok and Err results respectively.