【问题标题】:Converting JS to Typescript Property 'contains' does not exist on type 'never'将 JS 转换为 Typescript 属性“包含”在“从不”类型上不存在
【发布时间】:2022-06-24 17:01:06
【问题描述】:

当我尝试将此 js 转换为打字稿时,我遇到了一些错误。 第一个用于事件

它说:参数“事件”隐含地具有“任何”类型

我可以为事件添加任何类型,但想知道要使用的正确数据类型,而不是通用类型。

另一行用于以下行:

 if (!ref.current?.contains(event.target)) {

错误:

   Property 'contains' does not exist on type 'never'

任何帮助将不胜感激!

React.useEffect(() => {
    const handleOutsideClick = (event) => {
      if (window.innerWidth < 1024) {
        if (!ref.current?.contains(event.target)) {
          if (!open) return;
          setOpen(false);
        }
      }
    };
    window.addEventListener("click", handleOutsideClick);
    return () => window.removeEventListener("click", handleOutsideClick);
  }, [open, ref]);

【问题讨论】:

  • 要回答关于 ref 的部分,我们需要查看创建 ref 的代码,以及您将其传递到的元素类型。
  • 谢谢。它说: const ref: React.MutableRefObject
  • 你将它传递给什么类型的元素?例如,如果您使用&lt;div ref={ref}&gt;,那么我的问题的答案是“div”。
  • {children}
  • 好的......它从那里去哪里?如果我不知道您将它传递到哪个 dom 元素中,我无法告诉您它应该是什么类型。

标签: typescript


【解决方案1】:

const divRef = useRef&lt;HTMLDivElement&gt;(null);

使用它包含的 HTMLDivElement 类型(哈哈)。

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2023-04-02
    • 2018-08-17
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 2018-12-02
    • 2021-04-09
    • 2019-06-28
    相关资源
    最近更新 更多