[ ] Implementation of [key: number | string]: T; - and when it will be implemented - no dictionary/array/lenght are needed anymore - we actually have already had index access by this.storage[index]no matter what index is either number or string. It would be much more convinient to have indexed access to dictionar/array then 2 access props:
get dictionary(): Dictionary<T>{return this.toDictionary();}
get array(): Array<T>{return this.toArray();}
which we use into GeneStorage. So it's also need refactoring;
[ ] we may eliminate interface IDictionary at all;
[ ] also we have to much type aliaces. We may shortage their amount:
export type KeyValuePair<T> = {keyIndex: number|string, value: T};
export type Predicate<T> = (item:T)=>boolean;
export type Selector<T> = (item:T)=>string;
type KeyValuePairTransformer<T> = (item:T)=>KeyValuePair<T>;
export type ArrayMapper<T> = {mapper: KeyValuePairTransformer<T>};
export type ArrayConverter<T> = Array<T> & ArrayMapper<T>;
Need to investigate following:
this.storage[index]
no matter what index is either number or string. It would be much more convinient to have indexed access to dictionar/array then 2 access props:which we use into
GeneStorage
. So it's also need refactoring;