react-with-hoc
Version:
Work with React and HOCs (Higher-Order Components)
14 lines • 1 kB
TypeScript
import { ComponentType, FunctionComponent } from "react";
import { Hoc } from "../types/Hoc";
export type NewHocReturn<HocArgs extends any[]> = (...args: HocArgs) => Hoc<any[]>;
export type HocDefinition<HocArgs extends any[]> = (Component: ComponentType<any>, ...args: HocArgs) => FunctionComponent<any>;
export type GetHocArgs<T> = Extract<T extends NewHocReturn<infer R> ? R : T extends HocDefinition<infer R> ? R : never, any[]>;
type Name<HocArgs extends any[]> = string | ((functions: {
Component: ComponentType<any>;
hoc: HocDefinition<HocArgs>;
}, ...args: HocArgs) => string);
declare function newHoc<TNewHocReturn extends NewHocReturn<any>>(hoc: HocDefinition<GetHocArgs<TNewHocReturn>>): TNewHocReturn;
declare function newHoc<TNewHocReturn extends NewHocReturn<any>>(name: Name<GetHocArgs<TNewHocReturn>>, hoc: HocDefinition<GetHocArgs<TNewHocReturn>>): TNewHocReturn;
declare const exportNewHoc: typeof newHoc;
export { exportNewHoc as newHoc };
//# sourceMappingURL=newHoc.d.ts.map