es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiando el tipo de $router en los SFC de Vue.

He extendido el router de vue-router con algunas propiedades personalizadas. Esto funciona bien en tiempo de ejecución, pero no puedo hacer que el chequeo de tipos reconozca el cambio en vscode para mis archivos de Vue SFC.

Mi archivo vue-shims.d.ts se ve así:

import type { User } from '../common/api'
import type { CustomRouter } from './router'

declare module 'vue/types/vue' {
  interface Vue {
    $user: User
    $router: CustomRouter
  }
}

Otras declaraciones están configuradas correctamente, por ejemplo, $user tiene el tipo correcto. Sin embargo, $router siempre es del tipo VueRouter. ¿Cómo puedo hacer que priorice mi declaración sobre la del librería?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puede agregar el siguiente código en la parte superior de su archivo vue-shims.d.ts:

    import VueRouter, { Route, RawLocation } from 'vue-router'
    declare module 'vue-router/types/router' {
      interface VueRouter {
        pushWithParams(to: RawLocation, params: any): Promise<route>
        replaceWithParams(to: RawLocation, params: any): Promise<route>
      }
    }
    

    Esto asegurará que su declaración CustomRouter extienda la interfaz VueRouter y sobrescriba el tipo $router en sus archivos Vue SFC.

Comments are closed.