vue2.5 typescript引入插件 报错

发布于 2022-09-06 01:47:35 字数 1250 浏览 14 评论 0

在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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉态萌生 2022-09-13 01:47:35

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

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

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文