[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) › assertErr

## Call Signature

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

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

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

When an expected error 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 {
  assertErr,
  assertType,
  err,
  type Err,
  type Result,
  type Typed,
} from "@evolu/common";

interface UserNotFoundError extends Typed<"UserNotFound"> {
  readonly id: string;
}

const result: Result<string, UserNotFoundError> = err({
  type: "UserNotFound",
  id: "user-1",
});

assertErr(result, { type: "UserNotFound", id: "user-1" });
assertType<typeof result, Err<UserNotFoundError>>();
```

## Call Signature

```ts
function assertErr<R>(
  result: R,
  expectedError: InferErr<R>,
  eq: Eq<InferErr<R>>,
): asserts result is Extract<R, Err<unknown>>;
```

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

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

When an expected error 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 {
  assertErr,
  assertType,
  err,
  type Err,
  type Result,
  type Typed,
} from "@evolu/common";

interface UserNotFoundError extends Typed<"UserNotFound"> {
  readonly id: string;
}

const result: Result<string, UserNotFoundError> = err({
  type: "UserNotFound",
  id: "user-1",
});

assertErr(result, { type: "UserNotFound", id: "user-1" });
assertType<typeof result, Err<UserNotFoundError>>();
```

## Call Signature

```ts
function assertErr<R>(
  result: R,
  expectedError: unknown,
): asserts result is Extract<R, Err<unknown>>;
```

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

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

When an expected error 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 {
  assertErr,
  assertType,
  err,
  type Err,
  type Result,
  type Typed,
} from "@evolu/common";

interface UserNotFoundError extends Typed<"UserNotFound"> {
  readonly id: string;
}

const result: Result<string, UserNotFoundError> = err({
  type: "UserNotFound",
  id: "user-1",
});

assertErr(result, { type: "UserNotFound", id: "user-1" });
assertType<typeof result, Err<UserNotFoundError>>();
```