【发布时间】:2021-10-14 05:05:05
【问题描述】:
我不是打字稿专家,我一直在试图找出以下错误:
'({ keys, fire }: { keys?: any; fire: any; }) => void' 类型的参数不可分配给 '(value: unknown, value2: unknown, set: Set ) => 无效'。 参数 '__0' 和 'value' 的类型不兼容。 类型 'unknown' 不可分配给类型 '{ keys?: any;火:任何; }'。
代码块是:
listeners.forEach(({ keys, fire }: {keys?: any; fire: any}) => {
//some code
});
Listeners 是这样的集合:
const listeners = new Set();
我正在将一个对象推入其中:
const create = (keys) => {
//keys can be undefined
const listener = {
keys,
fire: useState()[1],
};
listeners.add(listener)
}
如果我从 forEach 中移除火或键,我仍然会收到相同的错误,我无法弄清楚为什么会发生这种情况。
【问题讨论】:
-
请提供minimal reproducible example,清楚地表明您面临的问题。理想情况下,有人可以将代码放入像The TypeScript Playground (link here!) 这样的独立 IDE 中,然后立即着手解决问题,而无需首先重新创建它。所以应该没有拼写错误、不相关的错误或未声明的类型或值。
-
@jcalz 这并不能清楚地说明问题。我可以添加一堆与问题完全无关但无关紧要的其他内容。
-
如果我将该代码放入 IDE,它会显示“
listeners不是我所知道的”(如我之前评论中的 TS Playground 链接所示)。所以在我尝试演示这个问题之前,我需要给listeners一个定义。我要求你代替我这样做,因为你会知道什么样的代码会产生你看到的错误,因为你面前有这样的代码。提供minimal reproducible example 确实需要一些努力(请考虑查看该链接中的信息),但它往往会带来更好的结果。 -
我们需要看看
listeners的样子,因为无法重现您的错误
标签: javascript typescript destructuring