type NotArray = object & { length?: never; }; export type ExtractProps = { [Property in keyof Type]: NonNullable extends string ? StringConstructor : NonNullable extends number ? NumberConstructor : NonNullable extends boolean ? BooleanConstructor : NonNullable extends Function ? FunctionConstructor : NonNullable extends Array ? ArrayConstructor : NonNullable extends Object ? NonNullable extends NotArray ? ObjectConstructor : Array : NumberConstructor; }; export {};