Vue:使用Vue.mixin时出现TypeScript错误

时间:2018-12-22 10:54:00

标签: typescript vue.js ssr

我正在使用Vue.js构建SSR应用程序。

我尝试this时遇到打字错误。

Vue.mixin({
    beforeRouteUpdate (to, from, next) {
        const { asyncData } = this.$options
        if (asyncData) {
            asyncData({
                store: this.$store,
                route: to
            }).then(next).catch(next)
        } else {
            next()
        }
    }
})

这是错误。

Property '$options' does not exist on type 'VueConstructor<Vue> | ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<string, any>>'.


Property '$store' does not exist on type 'VueConstructor<Vue> | ComponentOptions<Vue, DefaultData<Vue>, DefaultMethods<Vue>, DefaultComputed, PropsDefinition<Record<string, any>>, Record<string, any>>'.

如何避免此错误? 我是打字稿的新手。 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

Vue.mixin({
    beforeRouteUpdate ((this as Vue), to, from, next) {
        const vm = this as Vue;
        const { asyncData } = vm.$options
        if (asyncData) {
            asyncData({
                store: vm.$store,
                route: to
            }).then(next).catch(next)
        } else {
            next()
        }
    }
})