Javascript 财产';XXX和x27;不存在于类型';组合VueInstance<;Vue,{},{},{},只读<;记录<;从不,任何>&燃气轮机&燃气轮机';
我用TypeScript创建了一个vue组件,在Javascript 财产';XXX和x27;不存在于类型';组合VueInstance<;Vue,{},{},{},只读<;记录<;从不,任何>&燃气轮机&燃气轮机';,javascript,typescript,vue.js,vuejs2,Javascript,Typescript,Vue.js,Vuejs2,我用TypeScript创建了一个vue组件,在data()和methods()中发现了这个错误: 是什么导致了这个错误?它似乎仍然在开发中内置错误,但当我部署到生产环境时,它们会导致问题。您需要以正确的方式使用函数来保留此函数的引用 methods: { toggle() { this.open = !this.open if (this.open) { // Add
data()
和methods()
中发现了这个错误:
是什么导致了这个错误?它似乎仍然在开发中内置错误,但当我部署到生产环境时,它们会导致问题。您需要以正确的方式使用
函数来保留此函数的引用
methods: {
toggle() {
this.open = !this.open
if (this.open) {
// Add click listener to whole page to close dropdown
document.addEventListener('click', this.close)
}
},
close() {
this.open = false;
document.removeEventListener('click', this.close)
}
}
这似乎是由于使用This.$store
计算profilePath
的返回值,并结合其声明中未指定的返回类型而导致的
一种解决方法是将返回类型指定为string
:
profilePath: function(): string {
使用macOS Mojave上的Vue CLI 3.7.0,通过npm运行服务
和npm运行构建
进行验证
如Vue文档部分所述:
由于Vue声明文件的循环性质,TypeScript可能难以推断某些方法的类型。因此,您可能需要在诸如render和computed中的方法上注释返回类型
在您的情况下,应该将profilePath:function(){
更改为profilePath:function():string{
如果有一个render()方法返回一个值,而没有:VNode
注释,则可能会遇到相同的错误。这里描述了相同的问题
由于TS 3.4.x存在问题,3.9.6现在对我来说运行得很好临时解决方案是降级到以前的版本,直到修复为止。将vuter版本降级到0.26.0
,它就可以工作了。尝试以下方法:
(此选项与其他选项相同)。打开
这也适用于注入的属性:
(此为任意)。injectedProp
和$refs:
(如有)。$refs.myElement
编译器可以显示警告,但work这似乎没有改变任何东西,仍然会得到相同的错误。您看过吗?这里有一个简写:profilePath():string{
<script lang='ts'>
import Vue from 'vue';
import axios from 'axios'
export default Vue.extend({
data: function () {
return {
open: false
}
},
computed: {
profilePath: function () {
return "/user/" + this.$store.state.profile.profile.user.id
}
},
methods: {
toggle: function () {
this.open = !this.open
if (this.open) {
// Add click listener to whole page to close dropdown
document.addEventListener('click', this.close)
}
},
close: function () {
this.open = false;
document.removeEventListener('click', this.close)
}
}
})
</script>
methods: {
toggle() {
this.open = !this.open
if (this.open) {
// Add click listener to whole page to close dropdown
document.addEventListener('click', this.close)
}
},
close() {
this.open = false;
document.removeEventListener('click', this.close)
}
}
profilePath: function(): string {