【发布时间】:2018-11-21 10:41:32
【问题描述】:
我有以下 Vue 组件:
<template>
<v-snackbar bottom :color="color" v-model="snackbar">
{{ msg }}
<v-btn flat @click.native="close()">Close</v-btn>
</v-snackbar>
</template>
<script lang="ts">
import Vue from 'vue';
import VueEvent from '../../VueEvent';
export default Vue.extend({
data(): object {
return {
snackbar: false,
msg: '',
color: '',
};
},
created() {
VueEvent.listen('snackbar', (data) => {
this.snackbar = true;
this.msg = data.msg;
this.color = data.color;
});
this.malert();
},
methods: {
close(): void {
this.snackbar = false;
}
}
});
</script>
<style scoped>
</style>
Typescript 编译时出现以下错误:
Property 'snackbar' does not exist on type 'CombinedVueInstance<Vue, object, { close(): void; }, {}, Readonly<Record<never, any>>>'.
28 | methods: {
29 | close(): void {
> 30 | this.snackbar = false;
| ^
31 | }
32 | }
33 | });
有谁知道我该如何解决这个问题,或者解释一下为什么会这样?
【问题讨论】:
-
你能将
close(): void声明为箭头函数吗? -
然后我得到更多的错误。我可以通过
(this as any).snackbar解决它,但它应该可以工作。我看过很多例子,这就是它的完成方式。我也在使用文档中所述的垫片
标签: typescript vuejs2