在编辑Vue Typescript文件时,VS Code报告很多问题/红线:
示例错误:
[ts] Property 'isLoading' does not exist on type 'CombinedVueInstance<Vue,
object, > object, object, Readonly<Record<never, any>>>'. [2339]
当我在“ this”上引用一个属性时,问题似乎就出现了,并且所有此类引用在编辑器中都有一条红线,指出上述错误的变体。对于Vue数据对象中定义的属性和方法中定义的函数,问题都是相同的。
现在,有两个有趣的方面:
有关我的设置的信息:
tsconfig.js:
{
"compilerOptions": {
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"allowJs": true,
"target": "es5",
"strict": true,
"module": "es6",
"moduleResolution": "node",
"outDir": "../../../dist/public/js",
"sourceMap": true
}
}
我尝试了以下方法:
我现在完全陷入了困境-希望有人可以帮助我...
下面的代码示例(所有这些引用在我的VS代码中都有一条红线):
import axios from "axios";
import Vue from "vue";
// tslint:disable-next-line no-unused-expression
new Vue({
computed: {
hasProvider(): boolean {
// this line throw two errors
return this.isLoading === false && this.providerList.length > 0;
},
},
data() {
return {
description: "",
id: "",
isLoading: true,
name: "",
providerList: [],
};
},
el: "#app",
methods: {
loadProviderList() {
axios
.get("/api/provider/all")
.then((res: any) => {
// these lines throw an error
this.providerList = res.data.items;
this.isLoading = false;
})
.catch((err: any) => {
// tslint:disable-next-line:no-console
console.log(err);
});
}
},
mounted() {
// this line throw an error
return this.loadProviderList();
}
});
答案 0 :(得分:2)
今天就可以解决这个错误(VSCode中没有TypeScript的Vue)。
对于我们来说,它也从无到有,最终的罪魁祸首就是VSCode中的Vetur扩展需要重新加载。
答案 1 :(得分:1)
在 settings.json 中,设置:
"vetur.experimental.templateInterpolationService": false
答案 2 :(得分:0)
似乎问题出在我的mount()阶段中的return语句。删除该退货(可能是我使用的示例中遗留下来的东西)可以解决问题。
mounted() {
// this works
this.loadProviderList();
}
还是很奇怪,环境从一天到一天都改变了行为,并且环境已经编译-可能永远无法得到答案:)