---
url: >-
  https://lit-ui-router.dev/api/ui-router-registry/index/type-aliases/AssertNoCollisions.md
---
[ui-router-registry](../../index.md) / [ui-router-registry](../index.md) / AssertNoCollisions

# Type Alias: AssertNoCollisions\<T>

```ts
type AssertNoCollisions<T> = T;
```

Defined in: [registry.ts:98](https://github.com/simshanith/lit-ui-router/blob/8dfa5311c31f98b310587e91545f253f0bd348c4/packages/ui-router-registry/src/registry.ts#L98)

`T` itself, when every row in it is the one registered under its name.
Two modules that register one name with different rows keep only the first,
and on TypeScript 5 `skipLibCheck` hides the error, so a module can assert
its table where it registers it:

```ts
export type ContactsStates = AssertNoCollisions<typeof contactsStates>;
```

A row that collides fails the constraint at that line, keyed
`'not the row registered under'` with the state's name.

## Type Parameters

| Type Parameter |
| ------ |
|  `T` *extends* readonly { `name`: `string`; }\[] & `{ readonly [I in keyof T]: [Collision<T[I]>] extends [never] ? T[I] : { not the row registered under: Collision<T[I]> } }` |
