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ó
