From 02c469b17a02ca870b4204b230fc3b4272296a56 Mon Sep 17 00:00:00 2001 From: Tanimodori Date: Sun, 19 Jun 2022 17:51:28 +0800 Subject: [PATCH] =?UTF-8?q?types:=20=E5=86=8D=E6=AC=A1=E4=BF=AE=E5=A4=8DRo?= =?UTF-8?q?uteLocationRawEx=E7=B1=BB=E5=9E=8B=E9=94=99=E8=AF=AF=20(vbenjs#?= =?UTF-8?q?1968)=20(#1975)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/web/usePage.ts | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/hooks/web/usePage.ts b/src/hooks/web/usePage.ts index 738f3e3d..67e2c289 100644 --- a/src/hooks/web/usePage.ts +++ b/src/hooks/web/usePage.ts @@ -1,35 +1,28 @@ import type { RouteLocationRaw, Router } from 'vue-router'; import { PageEnum } from '/@/enums/pageEnum'; -import { isString } from '/@/utils/is'; import { unref } from 'vue'; import { useRouter } from 'vue-router'; import { REDIRECT_NAME } from '/@/router/constant'; -export type RouteLocationRawEx = RouteLocationRaw & { path: PageEnum }; +export type PathAsPageEnum = T extends { path: string } ? T & { path: PageEnum } : T; +export type RouteLocationRawEx = PathAsPageEnum; function handleError(e: Error) { console.error(e); } -// page switch +/** + * page switch + */ export function useGo(_router?: Router) { - let router; - if (!_router) { - router = useRouter(); - } - const { push, replace } = _router || router; - function go(opt: PageEnum | RouteLocationRawEx | string = PageEnum.BASE_HOME, isReplace = false) { + const { push, replace } = _router || useRouter(); + function go(opt: RouteLocationRawEx = PageEnum.BASE_HOME, isReplace = false) { if (!opt) { return; } - if (isString(opt)) { - isReplace ? replace(opt).catch(handleError) : push(opt).catch(handleError); - } else { - const o = opt as RouteLocationRaw; - isReplace ? replace(o).catch(handleError) : push(o).catch(handleError); - } + isReplace ? replace(opt).catch(handleError) : push(opt).catch(handleError); } return go; }