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: andThrough()
Next PageFunction: assertSuccess()

#Function: assertFailure()

Asserts that a Result or ResultAsync is a Failure and returns it. If the result is a Success, throws an error.

#Type Param

The type of the error value.

#Param

The Result or ResultAsync to assert as a Failure.

#Throws

If the result is a Success.

#Examples

import { 
import Result
Result
} from '@praha/byethrow';
const
const result: Result.Result<never, string>
result
=
import Result
Result
.
const fail: <string>(error: string) => Result.Result<never, string> (+1 overload)
fail
('error');
const
const failure: Result.Failure<string>
failure
=
import Result
Result
.
const assertFailure: <Result.Result<never, string>>(result: Result.Result<never, string>) => Result.Failure<string> (+1 overload)
assertFailure
(
const result: Result.Result<never, string>
result
);
// failure: { type: 'Failure', error: 'error' }
import { 
import Result
Result
} from '@praha/byethrow';
const
const result: Result.Result<number, never>
result
=
import Result
Result
.
const succeed: <number>(value: number) => Result.Result<number, never> (+1 overload)
succeed
(42);
import Result
Result
.
const assertFailure: <Result.ResultAsync<never, any>>(result: Result.ResultAsync<never, any>) => Promise<Result.Failure<any>> (+1 overload)
assertFailure
(result); // throws Error
No overload matches this call. Overload 1 of 2, '(result: ResultAsync<never, any>): Promise<Failure<any>>', gave the following error. Argument of type 'Result<number, never>' is not assignable to parameter of type 'ResultAsync<never, any>'. Type 'Failure<never>' is missing the following properties from type 'Promise<Result<never, any>>': then, catch, finally, [Symbol.toStringTag] Overload 2 of 2, '(result: Result<never, any>): Failure<any>', gave the following error. Argument of type 'Result<number, never>' is not assignable to parameter of type 'Result<never, any>'. Type 'Success<number>' is not assignable to type 'Result<never, any>'. Type 'Success<number>' is not assignable to type 'Success<never>'. Type 'number' is not assignable to type 'never'.
import { 
import Result
Result
} from '@praha/byethrow';
const
const getResult: () => Result.Result<number, string>
getResult
= ():
import Result
Result
.
type Result<T, E> = Result.Success<T> | Result.Failure<E>

A union type representing either a success or a failure.

@typeParamT - The type of the Success value.@typeParamE - The type of the Failure value.@example
import { Result } from '@praha/byethrow';

const doSomething = (): Result.Result<number, string> => {
  return Math.random() > 0.5
    ? { type: 'Success', value: 10 }
    : { type: 'Failure', error: 'Oops' };
};
@categoryCore Types
Result
<number, string> =>
import Result
Result
.
const fail: <string>(error: string) => Result.Result<never, string> (+1 overload)
fail
('error');
const
const value: any
value
=
import Result
Result
.
const pipe: <Result.Result<number, string>, Result.Result<never, string>, Result.Failure<any>, any>(a: Result.Result<number, string>, ab: (a: Result.Result<number, string>) => Result.Result<never, string>, bc: (b: Result.Result<never, string>) => Result.Failure<any>, cd: (c: Result.Failure<any>) => any) => any (+25 overloads)
pipe
(
const getResult: () => Result.Result<number, string>
getResult
(),
import Result
Result
.
const andThen: <Result.Result<number, string>, Result.Result<never, string>>(fn: (a: number) => Result.Result<never, string>) => (result: Result.Result<number, string>) => Result.Result<never, string> (+1 overload)
andThen
(() =>
import Result
Result
.
const fail: <string>(error: string) => Result.Result<never, string> (+1 overload)
fail
('die')),
import Result
Result
.
const assertFailure: {
    <R extends Result.ResultAsync<never, any>>(result: R): Promise<Result.Failure<Result.InferFailure<R>>>;
    <R extends Result.Result<never, any>>(result: R): Result.Failure<Result.InferFailure<R>>;
}

Asserts that a Result or ResultAsync is a Failure and returns it. If the result is a Success , throws an error.

@function@typeParamE - The type of the error value.@paramresult - The Result or ResultAsync to assert as a Failure.@returnsThe Failure result or a Promise of Success result.@throws{Error} If the result is a Success .@example
import { Result } from '@praha/byethrow';

const result = Result.fail('error');
const failure = Result.assertFailure(result);
// failure: { type: 'Failure', error: 'error' }
@example

Throws on Success

//
@errors

: 2769 import { Result } from '@praha/byethrow';

const result = Result.succeed(42); Result.assertFailure(result); // throws Error

@example

Safe unwrap with assertFailure

import { Result } from '@praha/byethrow';

const getResult = (): Result.Result<number, string> => Result.fail('error');
const value = Result.pipe(
getResult(),
Result.andThen(() => Result.fail('die')),
Result.assertFailure,
Result.unwrapError(), // Safe unwrap after assertion
);
@seeunwrapError - Use with assertFailure to safely unwrap error values.@categoryAssertions
assertFailure
,
import Result
Result
.
const unwrapError: <Result.Failure<any>>() => (result: Result.Failure<any>) => any (+3 overloads)
unwrapError
(), // Safe unwrap after assertion
);

#See

unwrapError - Use with assertFailure to safely unwrap error values.

#Call Signature

assertFailure<R>(result): Promise<Failure<InferFailure<R>>>

Defined in: functions/assert-failure.ts:54

#Type Parameters

#R

R extends ResultAsync<never, any>

#Parameters

#result

R

#Returns

Promise<Failure<InferFailure<R>>>

#Call Signature

assertFailure<R>(result): Failure<InferFailure<R>>

Defined in: functions/assert-failure.ts:55

#Type Parameters

#R

R extends Result<never, any>

#Parameters

#result

R

#Returns

Failure<InferFailure<R>>