> 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: assertSuccess()

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

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

## Type Parameters

### R

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

The result type that extends [ResultMaybeAsync](/byethrow/ja/api/types/Result.ResultMaybeAsync.md) with `never` as the error 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 [Success](/byethrow/ja/api/types/Result.Success.md).
The error type must be `never`.

## Returns

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

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

## Throws

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

## Examples

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

const result = Result.succeed(42);
const success = Result.assertSuccess(result);
// success: { type: 'Success', value: 42 }
```

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

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

const getResult = (): Result.Result<number, string> => Result.succeed(42);
const value = Result.pipe(
  getResult(),
  Result.orElse(() => Result.succeed(0)), // Error type becomes never
  Result.assertSuccess, // Type-safe: error type is now never
  Result.unwrap(), // Safe unwrap after assertion
);
```

## See

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