Vue资源+打字稿:类型'VueConstructor <vue>'上不存在属性'http'

时间:2019-02-22 12:12:40

标签: typescript vue.js vue-resource

我正在使用vue-resource的Vue项目中使用Typescript。该项目运行正常,但出现打字稿编译器错误。

enter image description here enter image description here

请注意,我可以在组件中使用this.$http来使用该模块。

我检查了thisthisthis的答案,但没有一个有帮助。有没有解决的办法?还是有一种方法可以使用Typescript在Vue-Resource中设置全局选项?还是完全忽略该错误的方法?

[编辑]解决方法(也附在我的答案中):

@Styx的评论中的一种解决方法(Github解决方案非常笨拙,因为我避免手动对vue-resource/types/vue.d.ts进行修改),无论如何在这里提到。

使用泛型并将类型转换为Vue,例如<any>Vue.http。但是,这可能会导致tslint警告,因此我通过使用(Vue as any)解决了此问题,然后访问(Vue as any).http

2 个答案:

答案 0 :(得分:4)

我认为您需要在main.ts所在的位置添加一个名为“ http.d.ts”的新定义文件,并添加以下内容:

import Vue from 'vue';

declare module 'vue/types/vue' {
  interface VueConstructor {
    http: any;
  }
}

这应该可以解决错误。

答案 1 :(得分:0)

从评论中,我获得了this链接。您可以通读,这里有一种解决方法:

使用泛型并将类型转换为Vue,例如<any>Vue.http。但是,这可能会导致tslint警告,因此我通过使用(Vue as any)解决了此问题,然后访问(Vue as any).http