import { ComponentType, memo, ComponentProps } from 'react'; type PropsComparator = ( prevProps: Readonly>, nextProps: Readonly>, ) => boolean; /** * This works like React.memo but for components with generics props. * See issue: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087 * @warning Don't use this if your component type isn't generic => `const Component = () => {...}` */ // eslint-disable-next-line @typescript-eslint/no-explicit-any export function typedMemo>( Component: C, propsAreEqual?: PropsComparator, ) { return memo(Component, propsAreEqual) as unknown as C & { displayName?: string }; }