Appearance
type RouterRouteName<TRouter> = TRouter extends Router<infer TRoutes> ? RoutesName<TRoutes> : RoutesName<Route[]>;
TRouter
Router