Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 财产';XXX和x27;不存在于类型';组合VueInstance<;Vue,{},{},{},只读<;记录<;从不,任何>&燃气轮机&燃气轮机';_Javascript_Typescript_Vue.js_Vuejs2 - Fatal编程技术网

Javascript 财产';XXX和x27;不存在于类型';组合VueInstance<;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

我用TypeScript创建了一个vue组件,在
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 {