vue.js 为什么在传递一个响应式属性时会出现“No overload matches this call”错误?

t5fffqht  于 2023-10-23  发布在  Vue.js
关注(0)|答案(1)|浏览(236)

在我的主应用程序中,我定义了

import { DateTime } from "luxon"
const now = ref(DateTime.now())
const maxCityNameSize = ref(0)

然后将变量传递给组件:

<time-bar :now="now" :maxCityNameSize="maxCityNameSize"></time-bar>

在该组件中,它们被定义为

const props = defineProps({
    now: { type: DateTime },
    maxCityNameSize: { type: Number },
})

我的代码按预期工作,但我在上面的props中得到了一个我无法理解的TypeScript错误:

No overload matches this call.
  Overload 1 of 3, '(props: string[]): { readonly [x: string]: any; }', gave the following error.
  Overload 2 of 3, '(props: ComponentObjectPropsOptions<Data>): { readonly [x: string]: Prop<unknown, unknown> | null | undefined; }', gave the following error.ts(2769)

runtime-core.d.ts(322, 53): The expected type comes from property 'now' which is declared here on type 'ComponentObjectPropsOptions<Data>'

我从来没有见过这个错误(尽管使用了很多 prop )-这意味着什么?
为了完整起见,我添加了另一个作为prop传递的React变量,它不会触发错误。
当搜索原因时,通常会指出错误来自函数的参数数量错误(不适用),或者类型不匹配(我也没有看到类型不匹配)。

92dk7w1h

92dk7w1h1#

我使用了一个双阶段的props声明,linter很高兴(代码也很高兴):

import { DateTime } from 'luxon';

const props = defineProps(['now', 'maxCityNameSize'])
const now = ref<DateTime>(props.now)
const maxCityNameSize = ref<number>(props.maxCityNameSize)

相关问题