Result
Index
Accessor
get
- let x = Ok('foo');Result.get(x);// Option.Some('foo')let x = Error('foo');Result.get(x);// Option.None
getError
Returns the
errorif Result.Error, Option.None if Result.Oklet x = Ok('foo');Result.getError(x);// Option.Nonelet x = Error('foo');Result.getError(x);// Option.Some('foo')
getOrElse
Returns the
valueif Result.Ok,getDefaultValue()if Result.Error.let x = Ok('foo');Result.getOrElse(x, () => 'bar');// 'foo'let x = Error('foo');Result.getOrElse(x, () => 'bar');// 'bar'
getOrThrow
Returns the
valueif Result.Ok, throwerrorif Result.Error.⚠ Impure function that may throw an error, its use is generally discouraged.
let x = Ok('foo');Result.getOrThrow(x);// 'foo'let x = Error('foo');Result.getOrThrow(x);// throw 'error'
Constructor
Error
Create a new
ErrorobjectError();// { _: 'Error', ok: false, value: undefined }Error(new globalThis.Error('my message'));// { _: 'Error', ok: false, error: Error}
Ok
Create a new
OkobjectOk();// { _: 'Ok', ok: true, value: undefined }Ok('value');// { _: 'Ok', ok: true, value: 'value'}
Type
hasInstance
Return
trueifanyValueis Result.Ok or Result.ErrorResult.hasInstance(null); // === falseResult.hasInstance(Result.Ok(null)); // === true
isError
Return
trueifanyValueis Result.Errorlet x = Ok('foo');console.log(Result.isError(x));// falselet x = Error('foo');console.log(Result.isError(x));// true
isOk
Return
trueifanyValueis Result.Oklet x = Ok('foo');console.log(isOk(x));// truelet x = Error('foo');console.log(isOk(x));// false
Other
Error
Type parameters
- E
readonlyerror
The error value
readonlyok
false only for Error objects
Ok
Type parameters
- V
readonlyok
true only for Ok objects
readonlyvalue
The success value
andThen
Calls
fnif the result is Result.Ok, otherwise returns the Result.Error value of self. This function can be used for control flow based onResultvalues.const square = (num: number): Result<number, 'TestError'> => Result.Ok(num * num);Result.andThen(Result.Ok(4), square); // Result.Ok(16)Result.andThen(Result.Error('TestError'), square); // Result.Error('TestError')
map
Maps a
Result<ValueFrom, Error>toResult<ValueTo, Error>by applying a function to a contained Result.Ok value, leaving a Result.Error value untouched. This function can be used to compose the results of two functions.const result = Ok('foo');Result.map(result, (value) => `${value}_bar`));// Ok('foo_bar')
mapError
Maps a
Result<Value, ErrorFrom>toResult<Value, ErrorTo>by applying a function to a contained Result.Error value, leaving a Result.Ok value untouched. This function can be used to pass through a successful result while handling an error.const result = Error('foo');Result.mapError(result, (value) => `${value}_bar`));// Error('foo_bar')
orElse
Calls
fnif the result is Result.Error, otherwise returns the Result.Ok value of self. This function can be used for control flow based on result values.const handleError = (message: string) => Result.Ok(message + '_handled');Result.orElse(Result.Error('TestError'), square); // Result.Ok('TestError_handled')Result.orElse(Result.Ok(4), square); // Result.Ok(4)
tryCall
Returns
Ok(block()). If an error was thrown then it returnsError(onError(<<thrown error>>))insteadconst class InvalidURLError extends Error {}const result = Result.tryCall(() => new URL('my/url'),(error) => new InvalidURLError());const class FetchError extends Error {}const result = Result.tryCall(() => fetch('my/url'),() => new FetchError());
Returns the
valueif Result.Ok, Option.None if Result.Error