import type { ComponentType, ErrorInfo, ReactElement } from 'react'; import { Component } from 'react'; class ErrorBoundary extends Component< { children: ReactElement; fallback: ReactElement; }, { hasError: boolean; } > { state = { hasError: false }; static getDerivedStateFromError() { return { hasError: true }; } componentDidCatch(error: Error, errorInfo: ErrorInfo) { console.error(error, errorInfo); } render() { if (this.state.hasError) { return this.props.fallback; } return this.props.children; } } export function withErrorBoundary>( Component: ComponentType, ErrorComponent: ReactElement, ) { return function WithErrorBoundary(props: T) { return ( ); }; }