Búsqueda de sitios web

typescript - Vuetify 2 Errores de tipo: No se encuentra el nombre 'DefaultProps'


Desde que actualicé mi proyecto para usar la nueva versión 2.x de Vuetify (https://vuetifyjs.com), recibo algunos errores de tipo durante la compilación y no sé cómo deshacerme de ellos. Probablemente simplemente mi tsconfig esté mal configurado de alguna manera.

Revisé los documentos y me aseguré de incluir vuetify en la sección de tipos en mi tsconfig.json así:

{
  "compilerOptions": {
    ...

    "types": [
      "webpack-env",
      "jest",
      "vuetify",
      "axios"
      ],

     ...
  }
}

No hago nada elaborado aquí:

import Vue from 'vue';
import App from './App.vue';
import vuetify from './plugins/vuetify';
import router from './router';
import store from './store';

Vue.config.productionTip = false;

new Vue({
  vuetify,
  router,
  store,
  render: (h) => h(App),
}).$mount('#app');

entonces ejecuto el servidor de desarrollo con: yarn serve

ERROR in /Users/sebe/workspace/app/frontend/arena/src/main.ts
12:3 Argument of type '{ vuetify: Vuetify; router: VueRouter; store: Store<any>; render: (h: CreateEle
ment) => VNode; }' is not assignable to parameter of type 'ComponentOptions<Vue, DefaultData<Vue>, Def
aultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<string, any>>'.
  Object literal may only specify known properties, and 'vuetify' does not exist in type 'ComponentOpt
ions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>
, Record<string, any>>'.
     8 | 
     9 | new Vue({
  > 10 |   vuetify,
       |   ^
    11 |   router,
    12 |   store,
    13 |   render: (h) => h(App),

ERROR in /Users/sebe/workspace/app/node_modules/vuetify/types/index.d.ts
59:10 Cannot find name 'DefaultData'.
    57 |   export interface ComponentOptions<
    58 |     V extends Vue,
  > 59 |     Data=DefaultData<V>,
       |          ^
    60 |     Methods=DefaultMethods<V>,
    61 |     Computed=DefaultComputed,
    62 |     PropsDef=PropsDefinition<DefaultProps>,

El segundo error se repite para DefaultProps, PropsDefinition, DefaultComputed, DefaultMethods.

La ayuda de cualquiera sería genial :)

ACTUALIZACIÓN: acabo de darme cuenta de que obtengo los mismos errores con la plantilla predeterminada de Vuetify en TypeScript:

vue create newapp
vue add vuetify
yarn serve

mi ./plugins/vuetify.ts se ve así:

import Vue from 'vue';
import Vuetify from 'vuetify/lib';
import colors from 'vuetify/lib/util/colors';
import { VuetifyPreset } from 'vuetify/types/presets';

Vue.use(Vuetify);

const opts: Partial<VuetifyPreset> = {
  theme: {
    dark: true,
    themes: {
      light: {
        primary: colors.green.base,
      },
      dark: {
        primary: colors.green.darken2,
      },
    },
  },
  icons: {
    iconfont: 'mdi',
  },
};

export default new Vuetify(opts);

Respuesta #1

en el código fuente de Vuetify:

export default Vuetify
export interface Vuetify

El módulo y la interfaz comparten el mismo nombre Vuetify, lo que causa este problema.

Cuando TypeScript quiere obtener la interfaz de Vuetify, pero siempre el módulo de Vuetify.

Para solucionar esto:

import { Vuetify } from 'vuetify'

agrega este código en tu archivo main.ts

Respuesta #2

Tuve el mismo problema y resultó que era porque había un enlace simbólico en mi ruta:

/c/linkToDev/vueApp - siempre falló

/d/devFolder/vueApp - siempre funcionó

Artículos relacionados