UNPKG

@fesjs/fes-design

Version:
12 lines (11 loc) 733 B
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 {};