Skip to content

isResult

Check if a value is a Result tuple

217 bytes

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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
([
var undefined
undefined
, 42]) // => true
import _
_
.
function isResult(value: unknown): value is _.Result<unknown>
export isResult

Returns true if the value is a Result tuple.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
([new
var Error: ErrorConstructor
new (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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
([new
var Error: ErrorConstructor
new (message?: string) => Error
Error
()]) // => false
import _
_
.
function isResult(value: unknown): value is _.Result<unknown>
export isResult

Returns true if the value is a Result tuple.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
([]) // => false
import _
_
.
function isResult(value: unknown): value is _.Result<unknown>
export isResult

Returns true if the value is a Result tuple.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
({}) // => false
import _
_
.
function isResult(value: unknown): value is _.Result<unknown>
export isResult

Returns true if the value is a Result tuple.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

isResult
([new
var Error: ErrorConstructor
new (message?: string) => Error
Error
(), true]) // => false

Also 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 undefined if 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 Error is 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 Ok type represents a successful operation. It’s a tuple of [undefined, TResult].
  • The Err type 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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

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.

@seehttps://radashi.js.org/reference/typed/isResult

@example

isResult([undefined, 42]) => true
isResult([new Error(), undefined]) => true
// Tuple must be of length 2.
isResult([new Error()]) => false
isResult([undefined, true, undefined]) => false
// Non-tuple values are false.
isResult([]) => false
isResult({}) => false
isResult(null) => false
// Result tuples cannot have both a value and an error.
isResult([new Error(), true]) => false

@version12.2.0

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.