请考虑以下代码:
export default defineComponent({
setup() {
const miniState = ref(true)
const setMiniState = (state: boolean, screenWidth: number) => {
if (screenWidth > 1023) {
miniState.value = false
} else if (state !== void 0) {
miniState.value = state === true
}
else {
miniState.value = true
}
}
watch('$q.screen.width', (width) => setMiniState(true, width))
return { miniState, setMiniState }
}
})
TypeScript掷回这个错误:
TS 2769:没有与此调用匹配的重载。
过载1/3,'(来源:简单效果,选项?:摘,“深”|“刷新”〉|未定义):StopHandle ',出现以下错误。类型“"$q.screen.width”“的参数不能赋给类型”SimpleEffect“的参数。
过载3之2,'(来源:监视器源,cb:WatcherCallBack,选项-部分|未定义):StopHandle ',出现以下错误。类型“"$q.screen.width”“的参数不能赋给类型”WatcherSource“的参数。
超载3之3,'(来源:监视程序源[],cb:(新值:未知[],旧值:未知[],清除时:清理注册器)=〉任何,选项?:部分|未定义):StopHandle ',出现以下错误。无法将类型“"$q.screen.width”“的参数分配给类型”WatcherSource[]“的参数。
这适用于以下代码行:
watch('$q.screen.width', (width) => setMiniState(true, width))
现在,我将string
而不是WatcherSource<any>
传递给watch
函数。我尝试了以下方法,但都失败了:
watch('$q.screen.width' as WatcherSource, (width) => setMiniState(true, width)) // fails
watch(('$q.screen.width' as WatcherSource ), (width) => setMiniState(true, width)) // fails
解决这个问题的正确方法是什么?
2条答案
按热度按时间klsxnrf11#
这是definition of
watch
andWatcherSource
因此,您应该传递ref或callback。
kdfy810k2#
我在使用Quasar时遇到过这个问题,结果是VS代码不知何故自动导入了错误的“watch”对象,如下所示:
代替
这就是为什么它需要错误的类型参数。
只是提醒一下,以防其他人也有同样的问题。
干杯