тип текста react «текущий» отсутствует в типе «никогда»

#reactjs #typescript

Вопрос:

Я использую react и typescript. Я хотел получить высоту тега div, поэтому я использовал useRef. Однако я получаю ошибку ts в текущем.

 Property 'current' is not present in type 'never'. ts(2339)
 
     const ref = useRef<HTMLDivElement>(null);

    useEffect(() => {
      if (ref != null || ref.current != null) {
        setHeight(ref.current.clientHeight);
      }
    }, [user]);

 

Ответ №1:

Это означает, что ваше условие ref.current != null «НИКОГДА» не будет истинным, если ref != null оно истинно

Я вижу в вашей логике, что вы пытаетесь проверить ref.current , не является ли значение null перед ссылкой на ref.current.clientHeight

Таким образом, правильное условие должно быть:

 useEffect(() => {
  if (ref !== null amp;amp; ref.current !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);
 

|| Условие выполняется слева направо, если вы хотите продолжать использовать свое условие, измените порядок на:

 useEffect(() => {
  if (ref.current !== null || ref !== null) {
    setHeight(ref.current.clientHeight);
  }
}, [user]);
 

Ответ №2:

Обратите внимание, что ошибки исчезли, когда вы меняете код на:

 if (ref !== null amp;amp; ref.current != null) {
    setHeight(ref.current.clientHeight);
}
 

Я сменил || «на amp;amp; «.