Create an instance of Err.
If you need to create an instance with a specific type (as you do whenever you are not constructing immediately for a function return or as an argument to a function), you can use a type parameter:
const notString = err<number, string>('something went wrong');
Note: passing nothing will produce a Result<T, void>, passing undefined will
produce a Result<T, undefined> which is compatible with Result<T, void>.
const normalResult = err<number, string>('oh no');
const explicitUndefined = err<number, undefined>(undefined);
const implicitVoid = err<number, void>();
In the context of an immediate function return, or an arrow function with a single expression value, you do not have to specify the types, so this can be quite convenient.
const arrowValidate = (data: SomeData): Result<number, string> =>
isValid(data) ? ok(42) : err('something went wrong');
function fnValidate(data: someData): Result<number, string> {
return isValid(data) ? ok(42) : err('something went wrong');
}
The type of the value contained in the Result for the success case
The type of the error contained in the Result for the failure case
The value to wrap in a Result.Err.
Create an instance of Err.
If you need to create an instance with a specific type (as you do whenever you are not constructing immediately for a function return or as an argument to a function), you can use a type parameter:
const notString = err<number, string>('something went wrong');
Note: passing nothing will produce a Result<T, void>, passing undefined will
produce a Result<T, undefined> which is compatible with Result<T, void>.
const normalResult = err<number, string>('oh no');
const explicitUndefined = err<number, undefined>(undefined);
const implicitVoid = err<number, void>();
In the context of an immediate function return, or an arrow function with a single expression value, you do not have to specify the types, so this can be quite convenient.
const arrowValidate = (data: SomeData): Result<number, string> =>
isValid(data) ? ok(42) : err('something went wrong');
function fnValidate(data: someData): Result<number, string> {
return isValid(data) ? ok(42) : err('something went wrong');
}
The type of the value contained in the Result for the success case
The value to wrap in a Result.Err.
Create an instance of Err.
If you need to create an instance with a specific type (as you do whenever you are not constructing immediately for a function return or as an argument to a function), you can use a type parameter:
Note: passing nothing will produce a
Result<T, void>, passingundefinedwill produce aResult<T, undefined>which is compatible withResult<T, void>.In the context of an immediate function return, or an arrow function with a single expression value, you do not have to specify the types, so this can be quite convenient.