vue2.5 typescript引入插件 报错

在vue2.5中用typescript开发,引入vue-resource插件时,会报 TS2339: Property 'http' does not exist on type 'VueConstructor<Vue>'. 看了下文档,应该要额外声明,但还是会报同样错误

clipboard.png

vue-shims.d.ts

import Vue from 'vue'
declare module "*.vue" {
    
    export default Vue;
}
declare module 'vue/types/vue' {
    // 3. 声明为 Vue 补充的东西
      interface Vue {
        $http: string,
        http:string
      }
}

app.vue

<template>
  <div id="app">
    <hello></hello>
  </div>
</template>

<script lang="ts">
  import Vue from 'vue'
  import Component from 'vue-class-component'
  import Hello from './components/hello.vue';
  import VueResource from "vue-resource";
  Vue.use(VueResource);
  @Component({
    components: {
      Hello
    }
  })
   export default class App extends Vue {
     mounted(){
     //这里报错了
       Vue.http.options.emulateJSON = true;
     }
   }
 
</script>

clipboard.png

阅读 9.1k
1 个回答

interface Vue
这是在往Vue的实例里面添加属性,你最后的引用是直接用Vue这个构造函数了。

如果你想用你这样Vue.http,那么你的全局声明应该在构造函数上:

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

如果你不想改声明,那么你的代码就得这么改:this.http

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题