export interface ValueTypes { string: string; number: number; float: number; boolean: boolean; } export type ValueTypeKeys = keyof ValueTypes; export interface IAccessor { value(arg0: string, type: K, defaultValue?: ValueTypes[K]): ValueTypes[K]; value(arg0: string): string; has(path: string): boolean; get(path: string, defaultValue: undefined): IAccessor | undefined; get(path: string, defaultValue?: IAccessor): IAccessor; /** * Get a list of IAccessor * If path does not exist, returns an empty list * @param path * @param defaultValue */ list(path: string, defaultValue?: Array): IAccessor[]; }