> For AI agents: the complete documentation index is available at /byethrow/ja/llms.txt, the full documentation bundle is available at /byethrow/ja/llms-full.txt.

# Function: assertFailure()

> **assertFailure**\<`R`>(`result`): `true` _extends_ `HasPromise`\<`R`> ? `Promise`\<[`Failure`](/byethrow/ja/api/types/Result.Failure.md)\<[`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`R`>>> : [`Failure`](/byethrow/ja/api/types/Result.Failure.md)\<[`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`R`>>

Asserts that a [Result](/byethrow/ja/api/types/Result.Result.md) or [ResultAsync](/byethrow/ja/api/types/Result.ResultAsync.md) is a [Failure](/byethrow/ja/api/types/Result.Failure.md) and returns it.
This function requires that the result's success type is `never`, meaning the result is
guaranteed to be a [Failure](/byethrow/ja/api/types/Result.Failure.md) at the type level.
If the result is a [Success](/byethrow/ja/api/types/Result.Success.md) at runtime, throws an error.

## Type Parameters

### R

`R` _extends_ [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`never`, `any`>

The result type that extends [ResultMaybeAsync](/byethrow/ja/api/types/Result.ResultMaybeAsync.md) with `never` as the success type.

## Parameters

### result

`R`

The [Result](/byethrow/ja/api/types/Result.Result.md) or [ResultAsync](/byethrow/ja/api/types/Result.ResultAsync.md) to assert as a [Failure](/byethrow/ja/api/types/Result.Failure.md).
The success type must be `never`.

## Returns

`true` _extends_ `HasPromise`\<`R`> ? `Promise`\<[`Failure`](/byethrow/ja/api/types/Result.Failure.md)\<[`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`R`>>> : [`Failure`](/byethrow/ja/api/types/Result.Failure.md)\<[`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`R`>>

The [Failure](/byethrow/ja/api/types/Result.Failure.md) result or a Promise of [Failure](/byethrow/ja/api/types/Result.Failure.md) result.

## Throws

If the result is a [Success](/byethrow/ja/api/types/Result.Success.md) at runtime.

## Examples

```ts
import { Result } from '@praha/byethrow';

const result = Result.fail('error');
const failure = Result.assertFailure(result);
// failure: { type: 'Failure', error: 'error' }
```

**Type-safe usage after narrowing success type**

```ts
import { Result } from '@praha/byethrow';

const getResult = (): Result.Result<number, string> => Result.fail('error');
const value = Result.pipe(
  getResult(),
  Result.andThen(() => Result.fail('die')), // Success type becomes never
  Result.assertFailure, // Type-safe: success type is now never
  Result.unwrapError(), // Safe unwrap after assertion
);
```

## See

[unwrapError](/byethrow/ja/api/functions/Result.unwrapError.md) - Use with `assertFailure` to safely unwrap error values.
