import type { RouteMap, RouteMapGeneric } from './route-map'
import type { Router } from '../router'
import type { RouteRecord, RouteRecordNormalized } from '../matcher/types'
-import { RouteRecordNameGeneric } from './route-records'
-
-/**
- * Possible values for a user-defined route record's name.
- */
-export type RouteRecordName = RouteMapGeneric extends RouteMap
- ? RouteRecordNameGeneric
- : keyof RouteMap
+import type { RouteRecordName, RouteRecordNameGeneric } from './route-records'
/**
* Generic version of {@link RouteLocation}. It is used when no {@link RouteMap} is provided.
-import {
+import type {
RouteLocation,
RouteLocationNormalized,
RouteLocationRaw,
} from './route-location'
-import { RouteMap } from './route-map'
+import type { RouteMap, RouteMapGeneric } from './route-map'
/**
* @internal
*/
export type RouteRecordNameGeneric = string | symbol | undefined
+/**
+ * Possible values for a user-defined route record's name.
+ *
+ * NOTE: since `RouteRecordName` is a type, it evaluates too early and it's always be {@link RouteRecordNameGeneric}. If you need a typed version use {@link RouteMap | `keyof RouteMap`}
+ */
+export type RouteRecordName = RouteMapGeneric extends RouteMap
+ ? RouteRecordNameGeneric
+ : keyof RouteMap
+
/**
* @internal
*/