From: Eduardo San Martin Morote Date: Fri, 11 Sep 2020 13:24:01 +0000 (+0200) Subject: fix(types): fix types for redirect records X-Git-Tag: v4.0.0-beta.10~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a77f1485323ef3b654077ecb227fd5a0373d3a2f;p=thirdparty%2Fvuejs%2Frouter.git fix(types): fix types for redirect records --- diff --git a/src/types/index.ts b/src/types/index.ts index f925caa9..77ad864b 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -237,6 +237,7 @@ export interface RouteRecordSingleView extends _RouteRecordBase { * Component to display when the URL matches this route. */ component: RawRouteComponent + components?: never /** * Allow passing down params as props to the component rendered by `router-view`. */ @@ -251,6 +252,7 @@ export interface RouteRecordMultipleViews extends _RouteRecordBase { * Components to display when the URL matches this route. Allow using named views. */ components: Record + component?: never /** * Allow passing down params as props to the component rendered by * `router-view`. Should be an object with the same keys as `components` or a @@ -260,14 +262,13 @@ export interface RouteRecordMultipleViews extends _RouteRecordBase { } /** - * Route Record that defines a redirect. Cannot have `component`, `components` or - * `children` as it is never rendered. + * Route Record that defines a redirect. Cannot have `component` or `components` + * as it is never rendered. */ export interface RouteRecordRedirect extends _RouteRecordBase { redirect: RouteRecordRedirectOption component?: never components?: never - children?: never } export type RouteRecordRaw = diff --git a/test-dts/routeRecords.test-d.ts b/test-dts/routeRecords.test-d.ts new file mode 100644 index 00000000..bcc59d9b --- /dev/null +++ b/test-dts/routeRecords.test-d.ts @@ -0,0 +1,31 @@ +import { RouteRecordRaw } from './index' +import { defineComponent } from 'vue' + +const component = defineComponent({}) +const components = { default: component } + +const routes: RouteRecordRaw[] = [] + +routes.push({ path: '/', redirect: '/foo' }) + +// @ts-expect-error cannot have components and component at the same time +routes.push({ path: '/', components, component }) + +routes.push({ + path: '/', + redirect: '/foo', + children: [], +}) + +routes.push({ path: '/', component, props: true }) +routes.push({ path: '/', component, props: to => to.params.id }) +// @ts-expect-error: props should be an object +routes.push({ path: '/', components, props: to => to.params.id }) +routes.push({ path: '/', components, props: { default: to => to.params.id } }) +routes.push({ path: '/', components, props: true }) + +// let r: RouteRecordRaw = { +// path: '/', +// component, +// components, +// }