Свойство не существует для типа vuejs pwa data () function - PullRequest
0 голосов
/ 05 сентября 2018

Я знаю, что это, вероятно, просто, но я не могу понять это.

Я создал VueJS PWA с помощью vue-cli 3, все работает, но когда я пытаюсь использовать свое приложение для тестирования или сборки для производства, я всегда получаю сообщение об ошибке: свойство '' не существует в типе ''.

Пример моего кода:

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 голосов
/ 05 сентября 2018

Проблема в декларации данных. С компонентами стиля класса вы не объявляете свойство данных, как обычно, вместо этого объявляете отдельные свойства данных как:

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

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

Вы, конечно, можете изменить типы any[] в соответствии с тем, как вы на самом деле определили дома и провинции, т. Е. object[], HouseInterface[] и т. Д.

...