import * as React from 'react'; import { ReactNode } from 'react'; import { ServiceContainerContext, ServiceContainerContextValue } from './ServiceContainerProvider'; export type ServiceContainerConsumeCallback = (serviceContainer: T) => ReactNode; export interface HttpClientConsumerProps { children: ServiceContainerConsumeCallback; } export class ServiceContainerConsumer extends React.PureComponent> { public render(): React.ReactNode { return ( {this.handleConsumeCallback} ); } private handleConsumeCallback = (value: ServiceContainerContextValue): ReactNode => { const { children } = this.props; if (!value || !value.serviceContainer) { throw new Error('No provider found for service container'); } return children(value.serviceContainer as T); }; }