假设我有以下接口,它定义了一个函数:
export declare interface NavigationGuard {
(to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext): NavigationGuardReturn | Promise<NavigationGuardReturn>;
}
我想以这种类型结束:
export SomeNavigationGuardType = (to: RouteLocationNormalized, from: RouteLocationNormalized): NavigationGuardReturn | Promise<NavigationGuardReturn>
利用最初的NavigationGuard
型……
我try 使用实用程序类型Parameters
,提取并使用Omit
来删除下一个参数,但Parameters
实用程序类型正在提取到元组.
我试着利用:
type NavigationGuardParams = Omit<Parameters<NavigationGuard>, 'next'>
export type UseRouterNivigationGuards = {
beforeEach?: (arg: NavigationGuardParams) => ReturnType<NavigationGuard>
beforeResolve?: (arg: NavigationGuardParams) => ReturnType<NavigationGuard>
afterEach?: NavigationHookAfter
}
和
type NavigationGuardParams = Omit<Parameters<NavigationGuard>, 'next'>
export type UseRouterNivigationGuards = {
beforeEach?: (...arg: NavigationGuardParams) => ReturnType<NavigationGuard>
beforeResolve?: (...arg: NavigationGuardParams) => ReturnType<NavigationGuard>
afterEach?: NavigationHookAfter
}
但这两个结果都会导致用法/参数错误,第一个结果如下:
"Expected 1 arguments, but got 2."
第二次try 给出:
"Argument of type '[RouteLocationNormalized, RouteLocationNormalized]' is not assignable to parameter of type 'NavigationGuardParams'."
因此,我请求帮助!有没有人有办法做到这一点?