@fesjs/fes-design
Version:
fes-design for PC
12 lines (11 loc) • 733 B
TypeScript
import type { RequiredByKeys } from '../_util/types';
import type { ExtractPublicPropTypes } from '../_util/interface';
type ComponentRequiredProps<CompProps, Prop extends keyof CompProps = keyof CompProps> = Prop extends Prop ? CompProps[Prop] extends {
required: true;
} ? Prop : never : never;
type ComponentDefaultProps<CompProps, Prop extends keyof CompProps = keyof CompProps> = Prop extends Prop ? CompProps[Prop] extends {
default: any;
} ? Prop : never : never;
export type ComponentProps<CP> = RequiredByKeys<ExtractPublicPropTypes<CP>, ComponentRequiredProps<CP>>;
export type ComponentInnerProps<CP> = RequiredByKeys<ExtractPublicPropTypes<CP>, ComponentRequiredProps<CP> | ComponentDefaultProps<CP>>;
export {};