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;