#Type Alias: InferSuccess<T>
InferSuccess<
T> = [T] extends [(...args) =>ResultMaybeAsync<infer U,any>] ?U: [T] extends [ResultMaybeAsync<infer U,any>] ?U:never
Infers the Success value type T from a Result or a function returning a Result.
#Type Parameters
#T
T
A ResultMaybeAsync type or a function returning it.
#Examples
import { import Result Result } from '@praha/byethrow';
type type R = Result.Success<number> | Result.Failure<string> R = 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.@exampleimport { 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>;
type type SuccessValue = number SuccessValue = import Result Result .type InferSuccess<T> = [T] extends [(...args: any[]) => Result.ResultMaybeAsync<infer U, any>] ? U : [T] extends [Result.ResultMaybeAsync<infer U, any>] ? U : neverInfers the
Success
value type T from a Result or a function returning a Result.
@typeParamT - A ResultMaybeAsync type or a function returning it.@exampleFrom a result object
import { Result } from '@praha/byethrow';
type R = Result.Result<number, string>;
type SuccessValue = Result.InferSuccess<R>; // number
@exampleFrom a function
import { Result } from '@praha/byethrow';
const fn = () => Promise.resolve({ type: 'Success', value: 123 } as const);
type SuccessValue = Result.InferSuccess<typeof fn>; // number
@categoryInfer Types InferSuccess <type R = Result.Success<number> | Result.Failure<string> R >; // numberimport { import Result Result } from '@praha/byethrow';
const const fn: () => Promise<{
readonly type: "Success";
readonly value: 123;
}>
fn = () => var Promise: PromiseConstructorRepresents the completion of an asynchronous operation
Promise .PromiseConstructor.resolve<{
readonly type: "Success";
readonly value: 123;
}>(value: {
readonly type: "Success";
readonly value: 123;
}): Promise<{
readonly type: "Success";
readonly value: 123;
}> (+2 overloads)
Creates a new resolved promise for the provided value.
@paramvalue A promise.@returnsA promise whose internal state matches the provided promise. resolve ({ type: "Success" type : 'Success', value: 123 value : 123 } as type const = {
readonly type: "Success";
readonly value: 123;
}
const );
type type SuccessValue = 123 SuccessValue = import Result Result .type InferSuccess<T> = [T] extends [(...args: any[]) => Result.ResultMaybeAsync<infer U, any>] ? U : [T] extends [Result.ResultMaybeAsync<infer U, any>] ? U : neverInfers the
Success
value type T from a Result or a function returning a Result.
@typeParamT - A ResultMaybeAsync type or a function returning it.@exampleFrom a result object
import { Result } from '@praha/byethrow';
type R = Result.Result<number, string>;
type SuccessValue = Result.InferSuccess<R>; // number
@exampleFrom a function
import { Result } from '@praha/byethrow';
const fn = () => Promise.resolve({ type: 'Success', value: 123 } as const);
type SuccessValue = Result.InferSuccess<typeof fn>; // number
@categoryInfer Types InferSuccess <typeof const fn: () => Promise<{
readonly type: "Success";
readonly value: 123;
}>
fn >; // number