# RouteDefinition

Source: /tuil/docs/reference/packages/router/api/route-definition
Locale: en

interface exported by @mwillbanks/tuil-router.



{/* Generated by tooling/docs/generate-reference.ts. */}

## interface [#interface]

Public interface exported by `@mwillbanks/tuil-router`.

```ts
export interface RouteDefinition<
  TParams = EmptyParams,
  TChildren extends Readonly<Record<string, object>> = Readonly<
    Record<string, object>
  >,
> {
  readonly component?: unknown;
  readonly children?: TChildren;
  readonly parseParams?: (params: unknown) => TParams;
  readonly beforeEnter?: RouteHandler<
    TParams,
    boolean | string | Promise<boolean | string>
  >;
  readonly loader?: RouteHandler<TParams, unknown | Promise<unknown>>;
  readonly onError?: RouteErrorHandler<TParams>;
  readonly beforeLeave?: RouteHandler<TParams, boolean | Promise<boolean>>;
}
```

## Members [#members]

| Member        | Type                                                                                                 | Required | Description                                                                                                                                      | Related types                                                       |
| ------------- | ---------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| `component`   | `unknown`                                                                                            | No       | The `component` member uses the `unknown` contract.                                                                                              | —                                                                   |
| `children`    | `TChildren \| undefined`                                                                             | No       | The `children` member uses the `TChildren \| undefined` contract.                                                                                | —                                                                   |
| `parseParams` | `((params: unknown) => TParams) \| undefined`                                                        | No       | The `parseParams` member uses the `((params: unknown) => TParams) \| undefined` contract.                                                        | —                                                                   |
| `beforeEnter` | `((context: RouteContext<TParams>) => string \| boolean \| Promise<string \| boolean>) \| undefined` | No       | The `beforeEnter` member uses the `((context: RouteContext<TParams>) => string \| boolean \| Promise<string \| boolean>) \| undefined` contract. | [`RouteContext`](/tuil/docs/reference/packages/router/api/route-context) |
| `loader`      | `((context: RouteContext<TParams>) => unknown) \| undefined`                                         | No       | The `loader` member uses the `((context: RouteContext<TParams>) => unknown) \| undefined` contract.                                              | [`RouteContext`](/tuil/docs/reference/packages/router/api/route-context) |
| `onError`     | `((error: unknown, context: RouteContext<TParams>) => void) \| undefined`                            | No       | The `onError` member uses the `((error: unknown, context: RouteContext<TParams>) => void) \| undefined` contract.                                | [`RouteContext`](/tuil/docs/reference/packages/router/api/route-context) |
| `beforeLeave` | `((context: RouteContext<TParams>) => boolean \| Promise<boolean>) \| undefined`                     | No       | The `beforeLeave` member uses the `((context: RouteContext<TParams>) => boolean \| Promise<boolean>) \| undefined` contract.                     | [`RouteContext`](/tuil/docs/reference/packages/router/api/route-context) |

## Parameters [#parameters]

This declaration has no public members.

## Returns [#returns]

This declaration does not return a value.

## Throws [#throws]

No thrown errors are documented for this declaration.

## Related types [#related-types]

No package-local related types.

## Source [#source]

[View the secondary source reference](https://github.com/mwillbanks/tuil/blob/main/packages/router/src/index.ts)

## Package [#package]

[@mwillbanks/tuil-router](/tuil/docs/reference/packages/router)
