# Choice

Defined in: [src/expressions/selection.ts:9](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L9)

A Jev Choice over application-owned candidates.

## Type Parameters

| Type Parameter | Default type |
| -------------- | ------------ |
| `C`            | -            |
| `None`         | `never`      |

## Constructors

### Constructor

> **new Choice**<`C`, `None`>(`candidates`, `projection`, `criterion`, `noneDescription`): `Choice`<`C`, `None`>

Defined in: [src/expressions/selection.ts:10](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L10)

#### Parameters

| Parameter         | Type                                                                     |
| ----------------- | ------------------------------------------------------------------------ |
| `candidates`      | readonly `C`\[]                                                          |
| `projection`      | ((`candidate`) => `unknown`) \| `undefined`                              |
| `criterion`       | `string`                                                                 |
| `noneDescription` | [`EntryType`](/Jevlish/reference/type-aliases/entrytype/) \| `undefined` |

#### Returns

`Choice`<`C`, `None`>

## Properties

| Property              | Modifier   | Type                                                                     | Defined in                                                                                                                                                 |
| --------------------- | ---------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| []()`candidates`      | `readonly` | readonly `C`\[]                                                          | [src/expressions/selection.ts:11](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L11) |
| []()`projection`      | `readonly` | ((`candidate`) => `unknown`) \| `undefined`                              | [src/expressions/selection.ts:12](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L12) |
| []()`criterion`       | `readonly` | `string`                                                                 | [src/expressions/selection.ts:13](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L13) |
| []()`noneDescription` | `readonly` | [`EntryType`](/Jevlish/reference/type-aliases/entrytype/) \| `undefined` | [src/expressions/selection.ts:14](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L14) |

## Methods

### orNone()

> **orNone**(`description`): `Choice`<`C`, `null`>

Defined in: [src/expressions/selection.ts:18](https://github.com/jacobgoldfarb/Jevlish/blob/83ccd8c0be5f41962c805f7d42ddf1b1f048de89/src/expressions/selection.ts#L18)

Make “none of them” a legitimate, distinct outcome.

#### Parameters

| Parameter     | Type                                                      |
| ------------- | --------------------------------------------------------- |
| `description` | [`EntryType`](/Jevlish/reference/type-aliases/entrytype/) |

#### Returns

`Choice`<`C`, `null`>