# Rule (/docs/api/core/interfaces/Rule)



`A` is the union of Action ids the Rule may select. It defaults to any string, which is what
Rules read from JSON carry; `validateRules` checks those against a list at runtime.

## Type Parameters [#type-parameters]

| Type Parameter                                                   | Default type                                       |
| ---------------------------------------------------------------- | -------------------------------------------------- |
| `Q` *extends* [`Questions`](/docs/api/core/interfaces/Questions) | [`Questions`](/docs/api/core/interfaces/Questions) |
| `A` *extends* `string`                                           | `string`                                           |

## Properties [#properties]

### action [#action]

```ts
action: A | null;
```

***

### condition [#condition]

```ts
condition: RuleCondition<Q>;
```

***

### id [#id]

```ts
id: string;
```
