object-path-generator
Version:
A lightweight library to generate object paths
10 lines (9 loc) • 690 B
TypeScript
type DeepRequired<T = any> = {
[K in keyof T]-?: NonNullable<T[K]> extends Function ? NonNullable<T[K]> : DeepRequired<NonNullable<T[K]>>;
};
type PropertyType<PropertyType, GeneralType> = () => GeneralType extends undefined ? PropertyType : GeneralType;
type PathGenElements<T, R = undefined> = {
[K in keyof T]: T[K] extends (...args: any[]) => any ? T[K] : T[K] extends object ? PathGenElements<T[K], R> : PropertyType<T[K], R>;
};
export declare const pathgen: <T = any, R = undefined>(root?: string, customFn?: (path: string, ...options: any[]) => any) => PathGenElements<DeepRequired<T>, R extends undefined ? (typeof customFn extends undefined ? string : R) : R>;
export {};