es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener la propiedad ‘height’ no existe en el tipo ‘string’ – Error de TypeScript

Estoy utilizando useRef para hacer referencia a un elemento div y almacenando getBoundingClientRect(). Al utilizarlo, obtengo un error de TypeScript que dice “La propiedad ‘height’ no existe en el tipo ‘string’. ¿Cómo puedo solucionar este error?

const divRef = useRef(null);
const [divSize, setDivSize] = useState("0");

setDivSize(divRef.current.getBoundingClientRect());

console.log(divSize.height); // Recibo un error de TS: La propiedad 'height' no existe en el tipo 'string'.

return (
  <content ref="{divRef}">
     {content}
  </content>
)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con este código es que divSize se declara como un tipo de dato string en useState, mientras que getBoundingClientRect() devuelve un objeto con propiedades como height. Para solucionar este error, puedes cambiar el valor inicial de divSize a un objeto que incluya la propiedad height:

    const [divSize, setDivSize] = useState({ height: 0 });
    

    Luego, al establecer el tamaño con setDivSize, puedes propagar los valores anteriores de divSize y actualizar la propiedad height con el nuevo valor:

    setDivSize(prev => ({ ...prev, height: divRef.current.getBoundingClientRect().height }));
    

    Finalmente, al acceder a la altura en console.log, puedes hacerlo mediante divSize.height:

    console.log(divSize.height);
    

Comments are closed.