import type { RouteRecordRaw } from 'vue-router' import { defineComponent } from 'vue' declare module 'vue-router' { interface RouteMeta extends Record { title?: string icon?: string hidden?: boolean } } interface RouteMeta extends Record { title?: string icon?: string hidden?: boolean } type Component = | ReturnType | (() => Promise) | (() => Promise) declare global { interface AppRouteRecordRaw extends Omit { top?: boolean name?: string hidden?: boolean plugin?: boolean inLayout?: boolean meta: RouteMeta component?: Component | string children?: AppRouteRecordRaw[] props?: Recordable fullPath?: string } interface AppCustomRouteRecordRaw extends Omit { top?: boolean name?: string hidden: boolean plugin?: boolean inLayout?: boolean meta?: RouteMeta component?: Component | string path: string redirect?: string children?: AppCustomRouteRecordRaw[] } }