#2758·vue-router

Creating a type declaration for `next`

Author: MidnighterCreated May 7, 2019Updated Jul 15, 2025
LabelsTypescripthas PRfixed on 4.x

What problem does this feature solve?

At the moment there is a type definition for NavigationGuard in router.d.ts. This works nicely. Within that, the next argument is a function that accepts a union of different types as argument.

typescript
next: (to?: RawLocation | false | ((vm: V) => any) | void) => void

I think it'd be neat to easily use this just like the Route interface declaration in, for example, a components navigation guard.

What does the proposed API look like?

Export a type definition maybe called NavigationGuardCallback in router.d.ts.

typescript
export type NavigationGuardCallback = (to?: RawLocation | false | ((vm: V) => any) | void) => void;

export type NavigationGuard<V extends Vue = Vue> = (
  to: Route,
  from: Route,
  next: NavigationGuardCallback
) => any;