在Vue.js中使用 prop 时,VS代码中出现“No overload matches this call.”(没有与此调用匹配的重载)消息

yvfmudvl  于 2022-12-19  发布在  Vue.js
关注(0)|答案(3)|浏览(777)

我有一个Vue.js项目,在VS代码中给我奇怪的错误/警告:

  • 每当我将一个值作为prop传递给某个定制组件时,就会发生这种情况--例如,在Vuetify组件上就不会发生这种情况
  • 它总是只在第一个 prop 上显示此警告
  • 不管 prop 是什么类型,也不管传递给 prop 的是什么
  • 项目编译时没有错误,浏览器控制台日志中也没有错误,我的项目工作正常
  • 我使用"常规/默认"组件样式,而不是基于类的组件样式
  • 我使用类型脚本

以下是示例图像中的prop在接收其值的子元素中的定义方式:

import Vue from 'vue';

export default Vue.extend({
    name: 'MyCustomComponent',

    props: {
        title: String,
    },

    data: function () {},
});

如何才能摆脱这些"无用"的警告?

编辑

根据请求,以下是父组件脚本和子组件脚本:
App.vue

<template>
    <v-app>
        <v-main>
            <hello-world :title="title" :heading="heading" />
        </v-main>
    </v-app>
</template>

<script lang="ts">
import Vue from 'vue';
import HelloWorld from './components/HelloWorld.vue';

export default Vue.extend({
    name: 'App',

    components: {
        HelloWorld,
    },

    data: () => ({
        title: 'Title!',
        heading: 'Heading!',
    }),
});
</script>

HelloWorld.vue

<template>
    <v-container>
        <v-row class="text-center">
            <v-col class="mb-4">
                <h1>
                    {{ title }}
                </h1>
                <h2>
                    {{ heading }}
                </h2>
            </v-col>
        </v-row>
    </v-container>
</template>

<script lang="ts">
import Vue from 'vue';

export default Vue.extend({
    name: 'HelloWorld',

    props: {
        title: String,
        heading: String,
    },

    data: () => ({}),
});
</script>
qacovj5a

qacovj5a1#

您的问题似乎源于vue-i18n插件。
我用你的代码和最新的vue-2兼容堆栈做了一个codesandbox,我没有收到警告。
总之,我建议你看看沙箱的package.json,更新你拥有的任何软件包,它们的版本比沙箱中的版本低。
很有可能您有一个旧版本的typescript,您可能想先从它开始。
如果这不能解决问题,请升级vue-i18n并检查VSCode是否有任何TS插件/扩展VSCode可能已经安装。
如果这不起作用,这应该修复它:

import { TranslateResult } from "vue-i18n";

export default {
  props: {
        title: [String, TranslateResult],
  },
}

但是同样,对于"vue": "^2.6.14", "vue-i18n": "8.27.1""typescript": "~4.5.5",您应该不需要它。
如果上述方法都不能解决您的问题,请尝试在www.example.com或vscode.dev上创建项目的副本codesandbox.io。如果可以复制,请保存并共享该链接。
也许它会有所帮助,下面是一篇较老的文章,概述了几年前vue-i18ntypescript之间的结合是多么的麻烦:https://medium.com/js-dojo/manage-vue-i18n-with-typescript-958b2f69846f

flvlnr44

flvlnr442#

当我在Vue 2项目中使用VS代码和Volar时,我得到了同样的错误No overload matches this call。我错过了安装说明中所述的依赖关系@vue/runtime-domhttps://marketplace.visualstudio.com/items?itemName=Vue.volar。所以请确保您已经安装了这个包。

mu0hgdu0

mu0hgdu03#

我遇到了类似的问题,只是在vuex类型中。看起来问题出在volar + vscode 1.74中。

我安装了community vscodium version 1.73,问题消失了

另一种解决问题的方法,我可以建议添加到tsconfig.json规则"strictFunctionTypes": false
但我不推荐这种方法,因为它删除了重要的类型检查。

相关问题