Vue.js VueJS:编译器错误状态数据属性不存在';通过此属性访问时不存在

Vue.js VueJS:编译器错误状态数据属性不存在';通过此属性访问时不存在,vue.js,Vue.js,我遇到了一个问题,似乎只是我的编译器有问题。它不喜欢找不到我在数据部分定义的属性。如果我将“this”替换为“(this as any)”,它运行得很好。这使我相信,我有一个问题,我需要修复的打字脚本。该错误消息针对我的情况非常具体,但我不确定如何修复它 编辑以添加垫片-vue.d.ts declare module '*.vue' { import Vue from 'vue'; export default Vue; } 计算属性可能需要显式类型批注。而不是 items() {

我遇到了一个问题,似乎只是我的编译器有问题。它不喜欢找不到我在数据部分定义的属性。如果我将“this”替换为“(this as any)”,它运行得很好。这使我相信,我有一个问题,我需要修复的打字脚本。该错误消息针对我的情况非常具体,但我不确定如何修复它

编辑以添加垫片-vue.d.ts

declare module '*.vue' {
  import Vue from 'vue';
  export default Vue;
}

计算属性可能需要显式类型批注。而不是

items() {
...
}
你会的

items(): ItemType[] {
...
}

然后,Typescript应该理解
引用。它还值得考虑,根据我的经验,它更适合Vue 2中的typescript(这个问题不会发生)。

最终解决这个问题的是我的声明性语句。 我的错误:

export default {
    name: 'Home',
    components: {
        ...
    },
    ...
};
修复方法:

export default Vue.extend({
    name: 'Home',
    components: {
        ...
    },
    ...
});

看起来TypeScript不知道应该如何处理Vue文件。错误中的
指的是
计算的
对象,而不是组件。如何编译代码?我使用“vue cli服务”来构建和托管代码。我认为它使用网页包。。。但老实说,我不确定。您的项目中是否有
vue.d.ts
?另外,您的第67行到第69行看起来很时髦,因为您说的是
(这是任何一行)。
。通常你根本不需要说什么,因为
这个。
非常好。使用
any
基本上违背了使用TS的一个核心目的(正如任何情况一样),这是我为解决我要问的问题而做的工作。它允许编译代码,并且在运行时工作良好。如果我将compliler抱怨的this替换为this(与任何一样),它将编译并工作得很好。我只是同意你的看法,它看起来很时髦,我不喜欢这样做。我很想解决这个问题,并把它们全部删除。编辑了我的问题以包含我正在使用的vue-d.ts文件。但我不知道它能做什么。