【发布时间】:2021-06-18 00:00:18
【问题描述】:
我正在使用 vue-property-decorator 属性在 Vue.js 2 中使用 Typescript 编写应用程序。我最近决定重构我的大部分代码,现在每次我通过 @Prop 装饰器将绑定属性传递给我的 vue 组件时,我都会收到一条错误消息,如下所示:
Invalid prop: type check failed for prop "pager". Expected PagerSettings, got Object
所有这一切最糟糕的部分是应用程序仍然可以正常运行,它只是向我的浏览器控制台抛出一个丑陋的错误消息。如果我将我的属性更改为键入“any”,那么一切都会完美无误,但这首先违背了使用 Typescript 的全部目的。
我针对同一个问题搜索了一堆答案,而解决方案始终是“你没有通过你认为你正在通过的东西”。我有 99% 的把握不是这样的。无论类型如何,我传递给组件的每个道具都会发生这种情况。在我从样板模板开始一个新项目并将我的所有代码带回后,这开始发生了。
我的 tsconfig.json 完全一样,据我所知,我的 package.json 中的所有版本都与之前的项目相匹配。我开始查看 vue.config.js,它几乎与一些细微的变化相同,但不会影响变量通过 @Prop 指令的方式。
以前有没有其他人经历过这种情况?我还能看什么来弄清楚为什么会发生这种情况?
【问题讨论】:
-
你能用道具添加一个你的组件的例子吗?另一个是你传递道具吗
-
@larizzatg 不确定我是否可以轻松复制此内容。我的组件代码与更新所有样板文件之前的代码完全相同,并且运行良好。唯一不同的是我初始化 VueJS 应用程序和我的 vue.config.js 文件的方式。 VueJS 配置中有什么可以实现的吗?是否有某种类型的严格检查我以前没有做过,但现在有?
-
如果您不提供minimal reproducible example,您希望其他人如何解决您的问题? "... 和以前一模一样" 对尝试调试您的代码的任何人来说并没有太多帮助。他们将如何测试任何潜在的修复?使用 codesanbox.io 或类似的。并确保它重现错误。
-
我要做的是创建一个简单的组件,如果我可以重现问题,有时使用代码沙箱或代码笔
-
复制/粘贴您的
package.json到codesandbox.io。然后,您将拥有完全相同的环境,因为您安装了相同的软件包。
标签: typescript vue.js vuejs2