import React, { FunctionComponent } from 'react'; type MemoizedComponent = React.MemoExoticComponent> & { compare?: (prevProps: any, nextProps: any) => boolean; }; export function isMemoizedComponent(component: FunctionComponent): component is MemoizedComponent { return (component as MemoizedComponent).type !== undefined; } export function genericMemo>( Component: Parameters[0], propsAreEqual?: Parameters[1], ) { return React.memo(Component, propsAreEqual) as unknown as C; }