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

## Call Signature

```ts
function assertOk<R>(result: R): asserts result is Extract<R, Ok<unknown>>;
```

Defined in: [packages/common/src/Assert.ts:1198](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/Assert.ts#L1198)

Asserts that a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) is an [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) and narrows it, optionally
comparing its value.

When an expected value is provided, it is compared using [assertEqual](https://evolu.dev/docs/api-reference/common/Assert/functions/assertEqual)
semantics by default. Pass a custom [Eq](https://evolu.dev/docs/api-reference/common/Eq/type-aliases/Eq) for different equality
semantics.

### Example

```ts
import {
  assertOk,
  assertType,
  ok,
  type Ok,
  type Result,
  type Typed,
} from "@evolu/common";

interface User {
  readonly id: string;
}

interface UserNotFoundError extends Typed<"UserNotFound"> {}

const result: Result<User, UserNotFoundError> = ok({ id: "user-1" });

assertOk(result, { id: "user-1" });
assertType<typeof result, Ok<User>>();
```

## Call Signature

```ts
function assertOk<R>(
  result: R,
  expectedValue: InferOk<R>,
  eq: Eq<InferOk<R>>,
): asserts result is Extract<R, Ok<unknown>>;
```

Defined in: [packages/common/src/Assert.ts:1201](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/Assert.ts#L1201)

Asserts that a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) is an [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) and narrows it, optionally
comparing its value.

When an expected value is provided, it is compared using [assertEqual](https://evolu.dev/docs/api-reference/common/Assert/functions/assertEqual)
semantics by default. Pass a custom [Eq](https://evolu.dev/docs/api-reference/common/Eq/type-aliases/Eq) for different equality
semantics.

### Example

```ts
import {
  assertOk,
  assertType,
  ok,
  type Ok,
  type Result,
  type Typed,
} from "@evolu/common";

interface User {
  readonly id: string;
}

interface UserNotFoundError extends Typed<"UserNotFound"> {}

const result: Result<User, UserNotFoundError> = ok({ id: "user-1" });

assertOk(result, { id: "user-1" });
assertType<typeof result, Ok<User>>();
```

## Call Signature

```ts
function assertOk<R>(
  result: R,
  expectedValue: unknown,
): asserts result is Extract<R, Ok<unknown>>;
```

Defined in: [packages/common/src/Assert.ts:1206](https://github.com/evoluhq/evolu/blob/ecbac001e0c18bbc45b44715f49ecc3a768c5ec9/packages/common/src/Assert.ts#L1206)

Asserts that a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) is an [Ok](https://evolu.dev/docs/api-reference/common/Result/interfaces/Ok) and narrows it, optionally
comparing its value.

When an expected value is provided, it is compared using [assertEqual](https://evolu.dev/docs/api-reference/common/Assert/functions/assertEqual)
semantics by default. Pass a custom [Eq](https://evolu.dev/docs/api-reference/common/Eq/type-aliases/Eq) for different equality
semantics.

### Example

```ts
import {
  assertOk,
  assertType,
  ok,
  type Ok,
  type Result,
  type Typed,
} from "@evolu/common";

interface User {
  readonly id: string;
}

interface UserNotFoundError extends Typed<"UserNotFound"> {}

const result: Result<User, UserNotFoundError> = ok({ id: "user-1" });

assertOk(result, { id: "user-1" });
assertType<typeof result, Ok<User>>();
```