[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › Result

Type-safe error handling with Result types.

## Composition

| Function                                                               | Description                                                                                                 |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| [allResult](https://evolu.dev/docs/api-reference/common/Result/functions/allResult) | Extracts all values from an array of [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result)s.  |
| [anyResult](https://evolu.dev/docs/api-reference/common/Result/functions/anyResult) | Returns the first successful [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).           |
| [mapResult](https://evolu.dev/docs/api-reference/common/Result/functions/mapResult) | Maps items to [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result)s and extracts all values. |

## Utilities

| Type Alias                                                                    | Description                                                                                                      |
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| [AnyResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/AnyResult)     | Shorthand for a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) with `any` type parameters.  |
| [ExcludeDone](https://evolu.dev/docs/api-reference/common/Result/type-aliases/ExcludeDone) | Removes [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) from an error union.                       |
| [InferDone](https://evolu.dev/docs/api-reference/common/Result/type-aliases/InferDone)     | Extracts the done value type from a [NextResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/NextResult). |
| [InferErr](https://evolu.dev/docs/api-reference/common/Result/type-aliases/InferErr)       | Extracts the error type from a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).              |
| [InferOk](https://evolu.dev/docs/api-reference/common/Result/type-aliases/InferOk)         | Extracts the value type from a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).              |
| [OnlyDone](https://evolu.dev/docs/api-reference/common/Result/type-aliases/OnlyDone)       | Extracts only [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) from an error union.                 |

## Functions

| Function                                                                 | Description                                                                                                                                          |
| ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [done](https://evolu.dev/docs/api-reference/common/Result/functions/done)             | Constructs a [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) value.                                                                    |
| [err](https://evolu.dev/docs/api-reference/common/Result/functions/err)               | Creates an [Err](https://evolu.dev/docs/api-reference/common/Result/interfaces/Err) result.                                                                       |
| [getOk](https://evolu.dev/docs/api-reference/common/Result/functions/getOk)           | Extracts the value from a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) whose error type is `never`.                           |
| [getOrNull](https://evolu.dev/docs/api-reference/common/Result/functions/getOrNull)   | Extracts the value from a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) if it is an `Ok`, or returns `null` if it is an `Err`. |
| [getOrThrow](https://evolu.dev/docs/api-reference/common/Result/functions/getOrThrow) | Returns the value from an `Ok` [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result), or throws if it is an `Err`.                     |
| [isErr](https://evolu.dev/docs/api-reference/common/Result/functions/isErr)           | Type guard for [Err](https://evolu.dev/docs/api-reference/common/Result/interfaces/Err) results.                                                                  |
| [isOk](https://evolu.dev/docs/api-reference/common/Result/functions/isOk)             | Type guard for [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) results.                                                                    |
| [ok](https://evolu.dev/docs/api-reference/common/Result/functions/ok)                 | Creates an [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) result.                                                                         |
| [tryAsync](https://evolu.dev/docs/api-reference/common/Result/functions/tryAsync)     | Wraps an async function that may throw, returning a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).                             |
| [trySync](https://evolu.dev/docs/api-reference/common/Result/functions/trySync)       | Wraps a synchronous function that may throw, returning a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).                        |

## Interfaces

| Interface                                                     | Description                                                                       |
| ------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) | A signal indicating normal completion of a pull-based protocol.                   |
| [Err](https://evolu.dev/docs/api-reference/common/Result/interfaces/Err)   | An error [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result).     |
| [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok)     | A successful [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result). |

## Type Aliases

| Type Alias                                                                  | Description                                                                                                                                                                                                                                                                                                 |
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [NextResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/NextResult) | A result for a pull-based protocol with three outcomes.                                                                                                                                                                                                                                                     |
| [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result)         | The problem with `throw` in JavaScript is that the caught value is always of unknown type. We can't be sure all errors have been handled because the TypeScript compiler can't tell us what was thrown — we can't use [exhaustiveCheck](https://evolu.dev/docs/api-reference/common/Function/functions/exhaustiveCheck). |