Commit 02c469b17a02ca870b4204b230fc3b4272296a56
Committed by
GitHub
1 parent
deff31bc
types: 再次修复RouteLocationRawEx类型错误 (vbenjs#1968) (#1975)
Showing
1 changed file
with
8 additions
and
15 deletions
src/hooks/web/usePage.ts
1 | 1 | import type { RouteLocationRaw, Router } from 'vue-router'; |
2 | 2 | |
3 | 3 | import { PageEnum } from '/@/enums/pageEnum'; |
4 | -import { isString } from '/@/utils/is'; | |
5 | 4 | import { unref } from 'vue'; |
6 | 5 | |
7 | 6 | import { useRouter } from 'vue-router'; |
8 | 7 | import { REDIRECT_NAME } from '/@/router/constant'; |
9 | 8 | |
10 | -export type RouteLocationRawEx = RouteLocationRaw & { path: PageEnum }; | |
9 | +export type PathAsPageEnum<T> = T extends { path: string } ? T & { path: PageEnum } : T; | |
10 | +export type RouteLocationRawEx = PathAsPageEnum<RouteLocationRaw>; | |
11 | 11 | |
12 | 12 | function handleError(e: Error) { |
13 | 13 | console.error(e); |
14 | 14 | } |
15 | 15 | |
16 | -// page switch | |
16 | +/** | |
17 | + * page switch | |
18 | + */ | |
17 | 19 | export function useGo(_router?: Router) { |
18 | - let router; | |
19 | - if (!_router) { | |
20 | - router = useRouter(); | |
21 | - } | |
22 | - const { push, replace } = _router || router; | |
23 | - function go(opt: PageEnum | RouteLocationRawEx | string = PageEnum.BASE_HOME, isReplace = false) { | |
20 | + const { push, replace } = _router || useRouter(); | |
21 | + function go(opt: RouteLocationRawEx = PageEnum.BASE_HOME, isReplace = false) { | |
24 | 22 | if (!opt) { |
25 | 23 | return; |
26 | 24 | } |
27 | - if (isString(opt)) { | |
28 | - isReplace ? replace(opt).catch(handleError) : push(opt).catch(handleError); | |
29 | - } else { | |
30 | - const o = opt as RouteLocationRaw; | |
31 | - isReplace ? replace(o).catch(handleError) : push(o).catch(handleError); | |
32 | - } | |
25 | + isReplace ? replace(opt).catch(handleError) : push(opt).catch(handleError); | |
33 | 26 | } |
34 | 27 | return go; |
35 | 28 | } | ... | ... |