type ComponentEntry<T> = {
Component: React.FC<T>;
props: T;
};
export type ParentComponentProps<HeaderProps , BodyProps , FooterProps , OtherProps > =
([HeaderProps] extends [never] ? {} : { header: ComponentEntry<HeaderProps> }) &
([BodyProps] extends [never] ? {} : { body: ComponentEntry<BodyProps> }) &
([FooterProps] extends [never] ? {} : { footer: ComponentEntry<FooterProps> }) &
([OtherProps] extends [never] ? {} : { other: ComponentEntry<OtherProps> });
type ComponentEntry<T> = {
Component: React.FC<T>;
props: T;
};
export type ParentComponentProps<HeaderProps , BodyProps , FooterProps , OtherProps > =
([HeaderProps] extends [never] ? {} : { header: ComponentEntry<HeaderProps> }) &
([BodyProps] extends [never] ? {} : { body: ComponentEntry<BodyProps> }) &
([FooterProps] extends [never] ? {} : { footer: ComponentEntry<FooterProps> }) &
([OtherProps] extends [never] ? {} : { other: ComponentEntry<OtherProps> });