首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue实例不会获取shims-vue.d.ts文件。

Vue实例不会获取shims-vue.d.ts文件。
EN

Stack Overflow用户
提问于 2020-06-03 12:43:49
回答 1查看 3.2K关注 0票数 2

我有一个Vue文件,如下所示:

代码语言:javascript
复制
import Vue from 'vue';
import VueRouter from 'vue-router';

export default Vue.extend({
  name: 'MyComponentsName',
  methods: {
    doRedirect() {
      this.$router.push({ name: 'another-route' });
    },
  },
});

然后在我的shims-vue.d.ts文件中:

代码语言:javascript
复制
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;
  }
}

但是,我收到以下警告:Property '$router' does not exist on type 'CombinedVueInstance<Vue, ...>

据我所知,我的胆小鬼应该告诉Vue什么是$router,但这似乎并没有发生。我想出的唯一方法就是使用((this as any).$router as VueRouter).push(),但这看起来很难看.

我怎样才能摆脱这个警告?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 13:45:14

如果你使用的是vue-路由器,你不应该增强自己。

尽管

代码语言:javascript
复制
import Vue from 'vue'

declare module '*.vue' {

  export default Vue
}

declare module 'vue/types/vue' {
  interface Vue {
    $property1: number;
  }
}

应该是正确的做法

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62173133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档