declare global { namespace JSX { interface IntrinsicElements { [elemName: string]: any; } interface Element extends HTMLElement { } interface ElementClass { render: () => HTMLElement; } } } export type Props = { [key: string]: any; }; export type ComponentFunction

= (props?: P, children?: any) => Node | Node[]; export type ExtractComponentProps = F extends ComponentFunction ? P : never;