/** * Function that receives default props and returns the function, * which returns correctly typed props inside React. Component * * Example ============== const defaultProps = { size: 10 }; type DefaultProps = Readonly; type IProps = { name: string; // required props color?: string; // and not required } & Partial; // add default class SomeComponent extends React.Component { static defaultProps = defaultProps; render () { const {name, size, color} = propsGetter(defaultProps)(this.props); return (
{name} {size} {color || ''}
); // in render use every without control } } // Usage // required only one props ============== * * @author Brauer Ilya * @date 2020-04-10 */ export const propsGetter = (defaultProps: DP) => { return

>(props: P) => { type PropsExcludingDefaults = Pick>; type RecomposedProps = DP & PropsExcludingDefaults; return (props as any) as RecomposedProps; }; };