下面这段是vue-router官方的类型定义,对外暴露了 type RouteConfig
interface _RouteConfigBase {
path: string
name?: string
children?: RouteConfig[]
redirect?: RedirectOption
alias?: string | string[]
meta?: RouteMeta
beforeEnter?: NavigationGuard
caseSensitive?: boolean
pathToRegexpOptions?: PathToRegexpOptions
}
interface RouteConfigSingleView extends _RouteConfigBase {
component?: Component
props?: boolean | Object | RoutePropsFunction
}
interface RouteConfigMultipleViews extends _RouteConfigBase {
components?: Dictionary<Component>
props?: Dictionary<boolean | Object | RoutePropsFunction>
}
export type RouteConfig = RouteConfigSingleView | RouteConfigMultipleViews
import { RouteConfig } from 'vue-router'
// 路由表
const form: RouteConfig = {
path: '/form',
component: Layout,
children: [
{
path: 'basic',
component: () => import('@/views/form/Basic.vue')
}
]
}
// 路由表数组
export const localRoutes: RouteConfig[] = [form]
// 通过接口获得的menus,得到权限路由表
export const generateMenus = (
localRoutes: RouteConfig[],
menus: IMenuItem[],
prefix: string
): RouteConfig[] => {
return localRoutes.reduce((prev: RouteConfig[], next: RouteConfig) => {
// 这里就是ts报错的地方,提示类型“RouteConfig”上不存在属性“component”
const { path, children, meta, component } = next
}, [])
}