React - useRef with TypeScript and functional component React - useRef with TypeScript and functional component reactjs reactjs

React - useRef with TypeScript and functional component


You require to extract the ref type elsewhere:

interface RefObject {  SayHi: () => void}

then just refer to it in both places

const Child = forwardRef((props: {name: string}, ref: Ref<RefObject>)=> {  const {name} = props;    useImperativeHandle(ref, () => ({ SayHi }));  function SayHi() { console.log("Hello " + name); }  return <div>{name}</div>;});
const Parent = () => {    const ref = useRef<RefObject>(null);    const onButtonClick = () => {      if (ref.current) {        ref.current.SayHi();      }    };    return (      <div>        <Child name="Adam" ref={ref}/>        <button onClick={onButtonClick}>Log console</button>      </div>    );}


Just replace the declaration of your ref with this const ref = useRef<{ SayHi: () => void }>(null);