类型vuejs pwa data()函数不存在该属性

时间:2018-09-04 23:17:26

标签: typescript vue.js vuejs2 vue-component progressive-web-apps

我知道这可能是基本的,但我无法弄清楚。

我使用vue-cli 3构建了VueJS PWA,一切正常,但是当我尝试为应用提供服务以进行测试或为生产而构建时,我总是会收到错误:属性”在类型”上不存在。

我的代码示例:

import { Component, Prop, Vue } from "vue-property-decorator";
import { VueperSlides, VueperSlide } from "vueperslides";
import "vueperslides/dist/vueperslides.min.css";
import db from "@/db";

@Component({
  components: {
    VueperSlides,
    VueperSlide
  }
})
export default class HelloWorld extends Vue {
  @Prop() private msg!: string;

  data() {
    return {
      houses: [],
      provinces: []
    };
  }


 private created() {
    const moment = require("moment");
    var date = moment(new Date()).format("YYYY-MM-DD");
    db
      .collection("houses")
      .where("valid_until", ">", date)
      .get()
      .then(querySnapshot => {
        querySnapshot.forEach(doc => {
          this.houses.push(doc.data());
        });
      });
  }

在上面的示例中,我不断收到错误消息:“ HelloWorld类型上不存在属性房屋”。但是,无论我在哪里尝试访问data()变量,都没有关系,我总是会遇到相同的错误,但是对于在组件中定义的不同变量,我总是会遇到同样的错误。

有人知道这个问题是什么,因为我真的不知道可能是什么。

1 个答案:

答案 0 :(得分:1)

问题在于数据声明。使用类样式组件,您不必像通常那样声明数据属性,而是将各个数据属性声明为:

// good
private houses: any[] = []
private provinces: any[] = []

// bad
data() {
  return {
    houses: [],
    provinces: []
  };
}

您当然可以更改any[]类型以匹配您实际定义房屋和省份的方式,即object[]HouseInterface[]等。