// declare type DateLike = Date | string | number; declare interface FlatArray extends Array { } declare interface FlatObject { [key: string]: FlatArray | Value; } // declare type Key = number | string; // declare type KeyPath = Iterable; declare interface KeyPathMap { [key: string]: KeyPath; } // Omit type https://github.com/Microsoft/TypeScript/issues/12215#issuecomment-377567046 declare type Omit = T extends any ? Pick> : never; // declare type PartialPick = Partial & Pick; declare interface SimpleArray extends Array { } declare interface SimpleObject { [key: string]: SimpleArray | SimpleObject | Value; } // declare type Value = boolean | Date | number | string; // | symbol; /* interface Iterator { next(value?: any): IteratorResult; return?(value?: any): IteratorResult; throw?(e?: any): IteratorResult; } declare interface Iterable { [Symbol.iterator](): Iterator; } */