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

回答:

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

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

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

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

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注