logo
byethrow
Guide
Examples
API Reference
Guide
Examples
API Reference
logo
byethrow
@praha/byethrow

Modules

Result

Types

Type Alias: Failure<E>
Type Alias: InferFailure<T>
Type Alias: InferSuccess<T>
Type Alias: Result<T, E>
Type Alias: ResultAsync<T, E>
Type Alias: ResultFor<R, T, E>
Type Alias: ResultMaybeAsync<T, E>
Type Alias: Success<T>

Functions

Function: andThen()
Function: andThrough()
Function: assertFailure()
Function: assertSuccess()
Function: bind()
Function: combine()
Function: do()
Function: fail()
Function: inspect()
Function: inspectError()
Function: isFailure()
Function: isResult()
Function: isSuccess()
Function: map()
Function: mapError()
Function: orElse()
Function: parse()
Function: pipe()
Function: succeed()
Function: try()
Function: unwrap()
Function: unwrapError()

Last Updated:

Previous PageFunction: bind()
Next PageFunction: do()

#Function: combine()

Combines multiple Result or ResultAsync values into a single result. If all inputs are Success, returns a Success with combined values. If any input is a Failure, returns a Failure with an array of all errors.

#Type Param

The input type (object or array of Results).

#Examples

import { 
import Result
Result
} from '@praha/byethrow';
const
const result: Result.Result<{
    a: number;
    b: string;
}, never[]>
result
=
import Result
Result
.
const combine: <{
    a: Result.Result<number, never>;
    b: Result.Result<string, never>;
}>(x: {
    a: Result.Result<number, never>;
    b: Result.Result<string, never>;
}) => Result.Result<{
    a: number;
    b: string;
}, never[]> (+1 overload)
combine
({
a: Result.Result<number, never>
a
:
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(1),
b: Result.Result<string, never>
b
:
import Result
Result
.
const succeed: <string>(value: string) => Result.Result<string, never> (+1 overload)
succeed
('hello'),
}); // { type: 'Success', value: { a: 1, b: 'hello' } }
import { 
import Result
Result
} from '@praha/byethrow';
const
const result: Result.Result<[number, number, number], never[]>
result
=
import Result
Result
.
const combine: <[Result.Result<number, never>, Result.Result<number, never>, Result.Result<number, never>]>(x: [Result.Result<number, never>, Result.Result<number, never>, Result.Result<number, never>]) => Result.Result<[number, number, number], never[]> (+1 overload)
combine
([
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(1),
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(2),
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(3),
]); // { type: 'Success', value: [1, 2, 3] }
import { 
import Result
Result
} from '@praha/byethrow';
const
const result: Result.Result<[number, never, never], string[]>
result
=
import Result
Result
.
const combine: <[Result.Result<number, never>, Result.Result<never, string>, Result.Result<never, string>]>(x: [Result.Result<number, never>, Result.Result<never, string>, Result.Result<never, string>]) => Result.Result<[number, never, never], string[]> (+1 overload)
combine
([
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(1),
import Result
Result
.
const fail: <string>(error: string) => Result.Result<never, string> (+1 overload)
fail
('error1'),
import Result
Result
.
const fail: <string>(error: string) => Result.Result<never, string> (+1 overload)
fail
('error2'),
]); // { type: 'Failure', error: ['error1', 'error2'] }

#Call Signature

combine<X>(x): ResultFor<X[keyof X], { [K in string | number | symbol]: InferSuccess<X[K]> }, InferFailure<X[keyof X]>[]>

Defined in: functions/combine.ts:63

#Type Parameters

#X

X extends Record<string, ResultMaybeAsync<any, any>>

#Parameters

#x

X

#Returns

ResultFor<X[keyof X], { [K in string | number | symbol]: InferSuccess<X[K]> }, InferFailure<X[keyof X]>[]>

#Call Signature

combine<X>(x): ResultFor<X[number], { [K in string | number | symbol]: InferSuccess<X[K<K>]> }, InferFailure<X[number]>[]>

Defined in: functions/combine.ts:64

#Type Parameters

#X

X extends ResultMaybeAsync<any, any>[]

#Parameters

#x

X

#Returns

ResultFor<X[number], { [K in string | number | symbol]: InferSuccess<X[K<K>]> }, InferFailure<X[number]>[]>