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

```ts
type OnlyDone<E> = Extract<E, Done<any>>;
```

Defined in: [packages/common/src/Result.ts:863](https://github.com/evoluhq/evolu/blob/dd96d79f1dbe9a49fa12ce8e0aa7d3d0177795ca/packages/common/src/Result.ts#L863)

Extracts only [Done](https://evolu.dev/docs/api-reference/common/Result/interfaces/Done) from an error union.

Useful for pull-based protocols where completion is encoded in the error
channel (for example [NextResult](https://evolu.dev/docs/api-reference/common/Result/type-aliases/NextResult)).

### Example

```ts
import {
  assertType,
  type Done,
  type OnlyDone,
  type Typed,
} from "@evolu/common";

type Errors = ReadFailedError | Done<number>;

interface ReadFailedError extends Typed<"ReadFailed"> {}

assertType<OnlyDone<Errors>, Done<number>>();
```