typescript - Vue-instans plockar inte upp shims-vue.d.ts-fil
Jag har en Vue-fil som ser ut så här:
import Vue from 'vue';
import VueRouter from 'vue-router';
export default Vue.extend({
name: 'MyComponentsName',
methods: {
doRedirect() {
this.$router.push({ name: 'another-route' });
},
},
});
Och sedan i min shims-vue.d.ts-fil:
declare module '*.vue' {
import Vue from 'vue';
export default Vue;
}
declare module 'vue/types/vue' {
import VueRouter from 'vue-router';
interface VueConstructor {
$router: VueRouter;
}
interface Vue {
$router: VueRouter;
}
}
Men jag får följande varning: Property '$router' finns inte på typen 'CombinedVueInstance<Vue, ...>'
Såvitt jag förstår borde mina shims tala om för Vue vad $router är, men det verkar inte hända. Den enda lösningen jag har kommit på är att använda ((this as any).$router as VueRouter).push(), men det verkar ganska fult...
Hur kan jag bli av med denna varning?
Svar #1
Om du använder vue-router bör du inte förstärka dig själv.
Även om
import Vue from 'vue'
declare module '*.vue' {
export default Vue
}
declare module 'vue/types/vue' {
interface Vue {
$property1: number;
}
}
Borde vara det rätta sättet att göra det på
