Я использую vuejs с машинописью и vue-class-component.Я пытаюсь создать пользовательский компонент с реактивными данными.
Вот мой код:
<template>
<div>
<input v-model="data.name" placeholder="Name">
<input v-model="data.value" placeholder="Value">
</div>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator';
interface Model {
name: string;
value: number;
}
@Component
export default class ClubVue extends Vue {
private data: Model;
public mounted() {
this.data = {...this.$store.getters.data};
}
}
</script>
В этой первой версии я получил эту ошибку:
Свойство или метод "data" не определены в экземпляре, но на них ссылаются во время рендеринга
Это нормально, как сказано на странице компонента vue-class, неопределенные данные не будут отражающими.Мне нужно инициализировать данные на ноль.Кроме того, я получаю эту ошибку машинописного текста:
Свойство 'data' не имеет инициализатора и не определено в конструкторе
Поэтому я хочу сделать это:
private data: Model = null;
Но я получаю эту ошибку машинописи:
Тип 'null' нельзя назначить типу 'Model'.
Я не хочуне нужно менять тип данных на Model | null
, потому что мне придется проверять, везде ли данные равны нулю, я буду их использовать, и я знаю, что данные никогда не будут равны нулю.
private data!: Model;
Также не работаетпотому что данные будут неопределенными и поэтому не будут реагировать.
Я не хочу отключать проверки машинописи, потому что они полезны для других частей кода.
Есть ли правильный способинициализировать данные здесь?