export interface IBananaSource { [key: string]: IBananaItem } export interface IBananaItem { rules?: IRule[]; value?: any; hidden?: | boolean | ((value: any, filed: IBananaItem, data: TypeSource) => boolean); children?: TypeSource; set?: (d: any, s: IBananaItem) => void; get?: (v: any, filed: IBananaItem, data: TypeSource) => {}; key?: string; [key: string]: any; } export interface IRule { validator?: RegExp | ((v: any) => Promise) | ((v: any) => boolean), message?: string, required?: boolean, } export type TypeSource = IBananaItem[] | IBananaSource;