Проблема машинописи в том, что здесь идет речь не о Node
. Node
является универсальным c элементом DOM, а HTMLDivElement
соответствует правильно. Проблема в том, что null
может принимать значение, а null
явно не Node
, поэтому вы не можете использовать ноль в appendChild
.
Вы должны добавить проверку, такую как if (elRef.current != null) { ... }
, чтобы убедиться, что HTMLDivElement
был правильно создан.
useEffect(() => {
const modalRoot = document.getElementById("modal");
if (elRef.current) modalRoot!.appendChild(elRef.current);
return () => {
if (elRef.current) modalRoot!.removeChild(elRef.current);
}
}, []);
Более простой способ (и в этом случае более логический один) будет просто использовать elRef.current!
, чтобы сказать TS, что вы уверены, что элемент присутствует, и это ясно, учитывая ваш предыдущий код.