=== tests/cases/compiler/complex.ts === interface Ara { t: T } >t : T interface Collection { map(mapper: (value: V, key: K, iter: this) => M): Collection; >map : (mapper: (value: V, key: K, iter: this) => M) => Collection >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this flatMap(mapper: (value: V, key: K, iter: this) => Ara, context?: any): Collection; >flatMap : (mapper: (value: V, key: K, iter: this) => Ara, context?: any) => Collection >mapper : (value: V, key: K, iter: this) => Ara >value : V >key : K >iter : this >context : any // these seem necessary to push it over the top for memory usage reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; >reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V >key : K >iter : this >initialReduction : R >context : any reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; >reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : V | R >value : V >key : K >iter : this toSeq(): Seq; >toSeq : () => Seq } interface Seq extends Collection { } interface N1 extends Collection { map(mapper: (value: T, key: void, iter: this) => M): N1; >map : (mapper: (value: T, key: void, iter: this) => M) => N1 >mapper : (value: T, key: void, iter: this) => M >value : T >key : void >iter : this flatMap(mapper: (value: T, key: void, iter: this) => Ara, context?: any): N1; >flatMap : (mapper: (value: T, key: void, iter: this) => Ara, context?: any) => N1 >mapper : (value: T, key: void, iter: this) => Ara >value : T >key : void >iter : this >context : any } interface N2 extends N1 { map(mapper: (value: T, key: void, iter: this) => M): N2; >map : (mapper: (value: T, key: void, iter: this) => M) => N2 >mapper : (value: T, key: void, iter: this) => M >value : T >key : void >iter : this flatMap(mapper: (value: T, key: void, iter: this) => Ara, context?: any): N2; >flatMap : (mapper: (value: T, key: void, iter: this) => Ara, context?: any) => N2 >mapper : (value: T, key: void, iter: this) => Ara >value : T >key : void >iter : this >context : any toSeq(): N2; >toSeq : () => N2 } === tests/cases/compiler/immutable.ts === // Test that complex recursive collections can pass the `extends` assignability check without // running out of memory. This bug was exposed in Typescript 2.4 when more generic signatures // started being checked. declare module Immutable { >Immutable : typeof Immutable export function fromJS(jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: Array) => any): any; >fromJS : (jsValue: any, reviver?: (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: (string | number)[]) => any) => any >jsValue : any >reviver : (key: string | number, sequence: Collection.Keyed | Collection.Indexed, path?: (string | number)[]) => any >key : string | number >sequence : Collection.Keyed | Collection.Indexed >Collection : any >Collection : any >path : (string | number)[] export function is(first: any, second: any): boolean; >is : (first: any, second: any) => boolean >first : any >second : any export function hash(value: any): number; >hash : (value: any) => number >value : any export function isImmutable(maybeImmutable: any): maybeImmutable is Collection; >isImmutable : (maybeImmutable: any) => maybeImmutable is Collection >maybeImmutable : any export function isCollection(maybeCollection: any): maybeCollection is Collection; >isCollection : (maybeCollection: any) => maybeCollection is Collection >maybeCollection : any export function isKeyed(maybeKeyed: any): maybeKeyed is Collection.Keyed; >isKeyed : (maybeKeyed: any) => maybeKeyed is Collection.Keyed >maybeKeyed : any >Collection : any export function isIndexed(maybeIndexed: any): maybeIndexed is Collection.Indexed; >isIndexed : (maybeIndexed: any) => maybeIndexed is Collection.Indexed >maybeIndexed : any >Collection : any export function isAssociative(maybeAssociative: any): maybeAssociative is Collection.Keyed | Collection.Indexed; >isAssociative : (maybeAssociative: any) => maybeAssociative is Collection.Indexed | Collection.Keyed >maybeAssociative : any >Collection : any >Collection : any export function isOrdered(maybeOrdered: any): boolean; >isOrdered : (maybeOrdered: any) => boolean >maybeOrdered : any export function isValueObject(maybeValue: any): maybeValue is ValueObject; >isValueObject : (maybeValue: any) => maybeValue is ValueObject >maybeValue : any export interface ValueObject { equals(other: any): boolean; >equals : (other: any) => boolean >other : any hashCode(): number; >hashCode : () => number } export module List { >List : typeof List function isList(maybeList: any): maybeList is List; >isList : (maybeList: any) => maybeList is List >maybeList : any function of(...values: Array): List; >of : (...values: T[]) => List >values : T[] } export function List(): List; >List : typeof List export function List(): List; >List : typeof List export function List(collection: Iterable): List; >List : typeof List >collection : Iterable export interface List extends Collection.Indexed { >Collection : typeof Collection // Persistent changes set(index: number, value: T): List; >set : (index: number, value: T) => List >index : number >value : T delete(index: number): List; >delete : (index: number) => List >index : number remove(index: number): List; >remove : (index: number) => List >index : number insert(index: number, value: T): List; >insert : (index: number, value: T) => List >index : number >value : T clear(): List; >clear : () => List push(...values: Array): List; >push : (...values: T[]) => List >values : T[] pop(): List; >pop : () => List unshift(...values: Array): List; >unshift : (...values: T[]) => List >values : T[] shift(): List; >shift : () => List update(index: number, notSetValue: T, updater: (value: T) => T): this; >update : { (index: number, notSetValue: T, updater: (value: T) => T): this; (index: number, updater: (value: T) => T): this; (updater: (value: this) => R): R; } >index : number >notSetValue : T >updater : (value: T) => T >value : T update(index: number, updater: (value: T) => T): this; >update : { (index: number, notSetValue: T, updater: (value: T) => T): this; (index: number, updater: (value: T) => T): this; (updater: (value: this) => R): R; } >index : number >updater : (value: T) => T >value : T update(updater: (value: this) => R): R; >update : { (index: number, notSetValue: T, updater: (value: T) => T): this; (index: number, updater: (value: T) => T): this; (updater: (value: this) => R): R; } >updater : (value: this) => R >value : this merge(...collections: Array | Array>): this; >merge : (...collections: (Collection.Indexed | T[])[]) => this >collections : (Collection.Indexed | T[])[] >Collection : any mergeWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; >mergeWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (Collection.Indexed | T[])[]) => this >merger : (oldVal: T, newVal: T, key: number) => T >oldVal : T >newVal : T >key : number >collections : (Collection.Indexed | T[])[] >Collection : any mergeDeep(...collections: Array | Array>): this; >mergeDeep : (...collections: (Collection.Indexed | T[])[]) => this >collections : (Collection.Indexed | T[])[] >Collection : any mergeDeepWith(merger: (oldVal: T, newVal: T, key: number) => T, ...collections: Array | Array>): this; >mergeDeepWith : (merger: (oldVal: T, newVal: T, key: number) => T, ...collections: (Collection.Indexed | T[])[]) => this >merger : (oldVal: T, newVal: T, key: number) => T >oldVal : T >newVal : T >key : number >collections : (Collection.Indexed | T[])[] >Collection : any setSize(size: number): List; >setSize : (size: number) => List >size : number // Deep persistent changes setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this >keyPath : Iterable >value : any deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this >keyPath : Iterable removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this >keyPath : Iterable updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } >keyPath : Iterable >notSetValue : any >updater : (value: any) => any >value : any updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } >keyPath : Iterable >updater : (value: any) => any >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] // Transient changes withMutations(mutator: (mutable: this) => any): this; >withMutations : (mutator: (mutable: this) => any) => this >mutator : (mutable: this) => any >mutable : this asMutable(): this; >asMutable : () => this asImmutable(): this; >asImmutable : () => this // Sequence algorithms concat(...valuesOrCollections: Array | C>): List; >concat : (...valuesOrCollections: (C | Iterable)[]) => List >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: number, iter: this) => M, context?: any): List; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => List >mapper : (value: T, key: number, iter: this) => M >value : T >key : number >iter : this >context : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): List; >flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => List >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number >iter : this >context : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): List; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): List; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number >iter : this >context : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): List; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number >iter : this >context : any } export module Map { >Map : typeof Map function isMap(maybeMap: any): maybeMap is Map; >isMap : (maybeMap: any) => maybeMap is Map >maybeMap : any function of(...keyValues: Array): Map; >of : (...keyValues: any[]) => Map >keyValues : any[] } export function Map(collection: Iterable<[K, V]>): Map; >Map : typeof Map >collection : Iterable<[K, V]> export function Map(collection: Iterable>): Map; >Map : typeof Map >collection : Iterable> export function Map(obj: {[key: string]: V}): Map; >Map : typeof Map >obj : { [key: string]: V; } >key : string export function Map(): Map; >Map : typeof Map export function Map(): Map; >Map : typeof Map export interface Map extends Collection.Keyed { >Collection : typeof Collection // Persistent changes set(key: K, value: V): this; >set : (key: K, value: V) => this >key : K >value : V delete(key: K): this; >delete : (key: K) => this >key : K remove(key: K): this; >remove : (key: K) => this >key : K deleteAll(keys: Iterable): this; >deleteAll : (keys: Iterable) => this >keys : Iterable removeAll(keys: Iterable): this; >removeAll : (keys: Iterable) => this >keys : Iterable clear(): this; >clear : () => this update(key: K, notSetValue: V, updater: (value: V) => V): this; >update : { (key: K, notSetValue: V, updater: (value: V) => V): this; (key: K, updater: (value: V) => V): this; (updater: (value: this) => R): R; } >key : K >notSetValue : V >updater : (value: V) => V >value : V update(key: K, updater: (value: V) => V): this; >update : { (key: K, notSetValue: V, updater: (value: V) => V): this; (key: K, updater: (value: V) => V): this; (updater: (value: this) => R): R; } >key : K >updater : (value: V) => V >value : V update(updater: (value: this) => R): R; >update : { (key: K, notSetValue: V, updater: (value: V) => V): this; (key: K, updater: (value: V) => V): this; (updater: (value: this) => R): R; } >updater : (value: this) => R >value : this merge(...collections: Array | {[key: string]: V}>): this; >merge : (...collections: (Collection | { [key: string]: V; })[]) => this >collections : (Collection | { [key: string]: V; })[] >key : string mergeWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; >mergeWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this >merger : (oldVal: V, newVal: V, key: K) => V >oldVal : V >newVal : V >key : K >collections : (Collection | { [key: string]: V; })[] >key : string mergeDeep(...collections: Array | {[key: string]: V}>): this; >mergeDeep : (...collections: (Collection | { [key: string]: V; })[]) => this >collections : (Collection | { [key: string]: V; })[] >key : string mergeDeepWith(merger: (oldVal: V, newVal: V, key: K) => V, ...collections: Array | {[key: string]: V}>): this; >mergeDeepWith : (merger: (oldVal: V, newVal: V, key: K) => V, ...collections: (Collection | { [key: string]: V; })[]) => this >merger : (oldVal: V, newVal: V, key: K) => V >oldVal : V >newVal : V >key : K >collections : (Collection | { [key: string]: V; })[] >key : string // Deep persistent changes setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this >keyPath : Iterable >value : any deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this >keyPath : Iterable removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this >keyPath : Iterable updateIn(keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } >keyPath : Iterable >notSetValue : any >updater : (value: any) => any >value : any updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : { (keyPath: Iterable, notSetValue: any, updater: (value: any) => any): this; (keyPath: Iterable, updater: (value: any) => any): this; } >keyPath : Iterable >updater : (value: any) => any >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] // Transient changes withMutations(mutator: (mutable: this) => any): this; >withMutations : (mutator: (mutable: this) => any) => this >mutator : (mutable: this) => any >mutable : this asMutable(): this; >asMutable : () => this asImmutable(): this; >asImmutable : () => this // Sequence algorithms concat(...collections: Array>): Map; >concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } >collections : Iterable<[KC, VC]>[] concat(...collections: Array<{[key: string]: C}>): Map; >concat : { (...collections: Iterable<[KC, VC]>[]): Map; (...collections: { [key: string]: C; }[]): Map; } >collections : { [key: string]: C; }[] >key : string map(mapper: (value: V, key: K, iter: this) => M, context?: any): Map; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Map >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Map; >mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Map >mapper : (key: K, value: V, iter: this) => M >key : K >value : V >iter : this >context : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Map; >mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Map >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number >iter : this >context : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Map; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Map >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Map; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Map; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Map; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any } export module OrderedMap { >OrderedMap : typeof OrderedMap function isOrderedMap(maybeOrderedMap: any): maybeOrderedMap is OrderedMap; >isOrderedMap : (maybeOrderedMap: any) => maybeOrderedMap is OrderedMap >maybeOrderedMap : any } export function OrderedMap(collection: Iterable<[K, V]>): OrderedMap; >OrderedMap : typeof OrderedMap >collection : Iterable<[K, V]> export function OrderedMap(collection: Iterable>): OrderedMap; >OrderedMap : typeof OrderedMap >collection : Iterable> export function OrderedMap(obj: {[key: string]: V}): OrderedMap; >OrderedMap : typeof OrderedMap >obj : { [key: string]: V; } >key : string export function OrderedMap(): OrderedMap; >OrderedMap : typeof OrderedMap export function OrderedMap(): OrderedMap; >OrderedMap : typeof OrderedMap export interface OrderedMap extends Map { // Sequence algorithms concat(...collections: Array>): OrderedMap; >concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } >collections : Iterable<[KC, VC]>[] concat(...collections: Array<{[key: string]: C}>): OrderedMap; >concat : { (...collections: Iterable<[KC, VC]>[]): OrderedMap; (...collections: { [key: string]: C; }[]): OrderedMap; } >collections : { [key: string]: C; }[] >key : string map(mapper: (value: V, key: K, iter: this) => M, context?: any): OrderedMap; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => OrderedMap >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): OrderedMap; >mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => OrderedMap >mapper : (key: K, value: V, iter: this) => M >key : K >value : V >iter : this >context : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): OrderedMap; >mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => OrderedMap >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number >iter : this >context : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): OrderedMap; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => OrderedMap >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): OrderedMap; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): OrderedMap; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): OrderedMap; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any } export module Set { >Set : typeof Set function isSet(maybeSet: any): maybeSet is Set; >isSet : (maybeSet: any) => maybeSet is Set >maybeSet : any function of(...values: Array): Set; >of : (...values: T[]) => Set >values : T[] function fromKeys(iter: Collection): Set; >fromKeys : { (iter: Collection): Set; (obj: { [key: string]: any; }): Set; } >iter : Collection function fromKeys(obj: {[key: string]: any}): Set; >fromKeys : { (iter: Collection): Set; (obj: { [key: string]: any; }): Set; } >obj : { [key: string]: any; } >key : string function intersect(sets: Iterable>): Set; >intersect : (sets: Iterable>) => Set >sets : Iterable> function union(sets: Iterable>): Set; >union : (sets: Iterable>) => Set >sets : Iterable> } export function Set(): Set; >Set : typeof Set export function Set(): Set; >Set : typeof Set export function Set(collection: Iterable): Set; >Set : typeof Set >collection : Iterable export interface Set extends Collection.Set { >Collection : typeof Collection // Persistent changes add(value: T): this; >add : (value: T) => this >value : T delete(value: T): this; >delete : (value: T) => this >value : T remove(value: T): this; >remove : (value: T) => this >value : T clear(): this; >clear : () => this union(...collections: Array | Array>): this; >union : (...collections: (Collection | T[])[]) => this >collections : (Collection | T[])[] merge(...collections: Array | Array>): this; >merge : (...collections: (Collection | T[])[]) => this >collections : (Collection | T[])[] intersect(...collections: Array | Array>): this; >intersect : (...collections: (Collection | T[])[]) => this >collections : (Collection | T[])[] subtract(...collections: Array | Array>): this; >subtract : (...collections: (Collection | T[])[]) => this >collections : (Collection | T[])[] // Transient changes withMutations(mutator: (mutable: this) => any): this; >withMutations : (mutator: (mutable: this) => any) => this >mutator : (mutable: this) => any >mutable : this asMutable(): this; >asMutable : () => this asImmutable(): this; >asImmutable : () => this // Sequence algorithms concat(...valuesOrCollections: Array | C>): Set; >concat : (...valuesOrCollections: (C | Iterable)[]) => Set >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: never, iter: this) => M, context?: any): Set; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set >mapper : (value: T, key: never, iter: this) => M >value : T >key : never >iter : this >context : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Set; >flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never >iter : this >context : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never >iter : this >context : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never >iter : this >context : any } export module OrderedSet { >OrderedSet : typeof OrderedSet function isOrderedSet(maybeOrderedSet: any): boolean; >isOrderedSet : (maybeOrderedSet: any) => boolean >maybeOrderedSet : any function of(...values: Array): OrderedSet; >of : (...values: T[]) => OrderedSet >values : T[] function fromKeys(iter: Collection): OrderedSet; >fromKeys : { (iter: Collection): OrderedSet; (obj: { [key: string]: any; }): OrderedSet; } >iter : Collection function fromKeys(obj: {[key: string]: any}): OrderedSet; >fromKeys : { (iter: Collection): OrderedSet; (obj: { [key: string]: any; }): OrderedSet; } >obj : { [key: string]: any; } >key : string } export function OrderedSet(): OrderedSet; >OrderedSet : typeof OrderedSet export function OrderedSet(): OrderedSet; >OrderedSet : typeof OrderedSet export function OrderedSet(collection: Iterable): OrderedSet; >OrderedSet : typeof OrderedSet >collection : Iterable export interface OrderedSet extends Set { // Sequence algorithms concat(...valuesOrCollections: Array | C>): OrderedSet; >concat : (...valuesOrCollections: (C | Iterable)[]) => OrderedSet >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: never, iter: this) => M, context?: any): OrderedSet; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => OrderedSet >mapper : (value: T, key: never, iter: this) => M >value : T >key : never >iter : this >context : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): OrderedSet; >flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => OrderedSet >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never >iter : this >context : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): OrderedSet; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): OrderedSet; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never >iter : this >context : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): OrderedSet; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never >iter : this >context : any zip(...collections: Array>): OrderedSet; >zip : (...collections: Collection[]) => OrderedSet >collections : Collection[] zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U >otherCollection : Collection zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U >thirdValue : V >otherCollection : Collection >thirdCollection : Collection zipWith(zipper: (...any: Array) => Z, ...collections: Array>): OrderedSet; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): OrderedSet; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): OrderedSet; (zipper: (...any: any[]) => Z, ...collections: Collection[]): OrderedSet; } >zipper : (...any: any[]) => Z >any : any[] >collections : Collection[] } export module Stack { >Stack : typeof Stack function isStack(maybeStack: any): maybeStack is Stack; >isStack : (maybeStack: any) => maybeStack is Stack >maybeStack : any function of(...values: Array): Stack; >of : (...values: T[]) => Stack >values : T[] } export function Stack(): Stack; >Stack : typeof Stack export function Stack(): Stack; >Stack : typeof Stack export function Stack(collection: Iterable): Stack; >Stack : typeof Stack >collection : Iterable export interface Stack extends Collection.Indexed { >Collection : typeof Collection // Reading values peek(): T | undefined; >peek : () => T // Persistent changes clear(): Stack; >clear : () => Stack unshift(...values: Array): Stack; >unshift : (...values: T[]) => Stack >values : T[] unshiftAll(iter: Iterable): Stack; >unshiftAll : (iter: Iterable) => Stack >iter : Iterable shift(): Stack; >shift : () => Stack push(...values: Array): Stack; >push : (...values: T[]) => Stack >values : T[] pushAll(iter: Iterable): Stack; >pushAll : (iter: Iterable) => Stack >iter : Iterable pop(): Stack; >pop : () => Stack // Transient changes withMutations(mutator: (mutable: this) => any): this; >withMutations : (mutator: (mutable: this) => any) => this >mutator : (mutable: this) => any >mutable : this asMutable(): this; >asMutable : () => this asImmutable(): this; >asImmutable : () => this // Sequence algorithms concat(...valuesOrCollections: Array | C>): Stack; >concat : (...valuesOrCollections: (C | Iterable)[]) => Stack >valuesOrCollections : (C | Iterable)[] map(mapper: (value: T, key: number, iter: this) => M, context?: any): Stack; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Stack >mapper : (value: T, key: number, iter: this) => M >value : T >key : number >iter : this >context : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Stack; >flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Stack >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number >iter : this >context : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Set; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Set; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number >iter : this >context : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Set; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number >iter : this >context : any } export function Range(start?: number, end?: number, step?: number): Seq.Indexed; >Range : (start?: number, end?: number, step?: number) => Seq.Indexed >start : number >end : number >step : number >Seq : any export function Repeat(value: T, times?: number): Seq.Indexed; >Repeat : (value: T, times?: number) => Seq.Indexed >value : T >times : number >Seq : any export module Record { >Record : typeof Record export function isRecord(maybeRecord: any): maybeRecord is Record.Instance; >isRecord : (maybeRecord: any) => maybeRecord is Instance >maybeRecord : any >Record : any export function getDescriptiveName(record: Instance): string; >getDescriptiveName : (record: Instance) => string >record : Instance export interface Class { (values?: Partial | Iterable<[string, any]>): Instance & Readonly; >values : Partial | Iterable<[string, any]> new (values?: Partial | Iterable<[string, any]>): Instance & Readonly; >values : Partial | Iterable<[string, any]> } export interface Instance { readonly size: number; >size : number // Reading values has(key: string): boolean; >has : (key: string) => boolean >key : string get(key: K): T[K]; >get : (key: K) => T[K] >key : K // Reading deep values hasIn(keyPath: Iterable): boolean; >hasIn : (keyPath: Iterable) => boolean >keyPath : Iterable getIn(keyPath: Iterable): any; >getIn : (keyPath: Iterable) => any >keyPath : Iterable // Value equality equals(other: any): boolean; >equals : (other: any) => boolean >other : any hashCode(): number; >hashCode : () => number // Persistent changes set(key: K, value: T[K]): this; >set : (key: K, value: T[K]) => this >key : K >value : T[K] update(key: K, updater: (value: T[K]) => T[K]): this; >update : (key: K, updater: (value: T[K]) => T[K]) => this >key : K >updater : (value: T[K]) => T[K] >value : T[K] merge(...collections: Array | Iterable<[string, any]>>): this; >merge : (...collections: (Iterable<[string, any]> | Partial)[]) => this >collections : (Iterable<[string, any]> | Partial)[] mergeDeep(...collections: Array | Iterable<[string, any]>>): this; >mergeDeep : (...collections: (Iterable<[string, any]> | Partial)[]) => this >collections : (Iterable<[string, any]> | Partial)[] mergeWith(merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeWith : (merger: (oldVal: any, newVal: any, key: keyof T) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this >merger : (oldVal: any, newVal: any, key: keyof T) => any >oldVal : any >newVal : any >key : keyof T >collections : (Iterable<[string, any]> | Partial)[] mergeDeepWith(merger: (oldVal: any, newVal: any, key: any) => any, ...collections: Array | Iterable<[string, any]>>): this; >mergeDeepWith : (merger: (oldVal: any, newVal: any, key: any) => any, ...collections: (Iterable<[string, any]> | Partial)[]) => this >merger : (oldVal: any, newVal: any, key: any) => any >oldVal : any >newVal : any >key : any >collections : (Iterable<[string, any]> | Partial)[] delete(key: K): this; >delete : (key: K) => this >key : K remove(key: K): this; >remove : (key: K) => this >key : K clear(): this; >clear : () => this // Deep persistent changes setIn(keyPath: Iterable, value: any): this; >setIn : (keyPath: Iterable, value: any) => this >keyPath : Iterable >value : any updateIn(keyPath: Iterable, updater: (value: any) => any): this; >updateIn : (keyPath: Iterable, updater: (value: any) => any) => this >keyPath : Iterable >updater : (value: any) => any >value : any mergeIn(keyPath: Iterable, ...collections: Array): this; >mergeIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] mergeDeepIn(keyPath: Iterable, ...collections: Array): this; >mergeDeepIn : (keyPath: Iterable, ...collections: any[]) => this >keyPath : Iterable >collections : any[] deleteIn(keyPath: Iterable): this; >deleteIn : (keyPath: Iterable) => this >keyPath : Iterable removeIn(keyPath: Iterable): this; >removeIn : (keyPath: Iterable) => this >keyPath : Iterable // Conversion to JavaScript types toJS(): { [K in keyof T]: any }; >toJS : () => { [K in keyof T]: any; } toJSON(): T; >toJSON : () => T toObject(): T; >toObject : () => T // Transient changes withMutations(mutator: (mutable: this) => any): this; >withMutations : (mutator: (mutable: this) => any) => this >mutator : (mutable: this) => any >mutable : this asMutable(): this; >asMutable : () => this asImmutable(): this; >asImmutable : () => this // Sequence algorithms toSeq(): Seq.Keyed; >toSeq : () => Seq.Keyed >Seq : any [Symbol.iterator](): IterableIterator<[keyof T, T[keyof T]]>; >[Symbol.iterator] : () => IterableIterator<[keyof T, T[keyof T]]> >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol } } export function Record(defaultValues: T, name?: string): Record.Class; >Record : typeof Record >defaultValues : T >name : string >Record : any export module Seq { >Seq : typeof Seq function isSeq(maybeSeq: any): maybeSeq is Seq.Indexed | Seq.Keyed; >isSeq : (maybeSeq: any) => maybeSeq is Indexed | Keyed >maybeSeq : any >Seq : any >Seq : any function of(...values: Array): Seq.Indexed; >of : (...values: T[]) => Indexed >values : T[] >Seq : any export module Keyed {} export function Keyed(collection: Iterable<[K, V]>): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } >collection : Iterable<[K, V]> >Seq : any export function Keyed(obj: {[key: string]: V}): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } >obj : { [key: string]: V; } >key : string >Seq : any export function Keyed(): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } >Seq : any export function Keyed(): Seq.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; (): Keyed; (): Keyed; } >Seq : any export interface Keyed extends Seq, Collection.Keyed { >Collection : typeof Collection toJS(): Object; >toJS : () => Object toJSON(): { [key: string]: V }; >toJSON : () => { [key: string]: V; } >key : string toSeq(): this; >toSeq : () => this concat(...collections: Array>): Seq.Keyed; >concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } >collections : Iterable<[KC, VC]>[] >Seq : any concat(...collections: Array<{[key: string]: C}>): Seq.Keyed; >concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } >collections : { [key: string]: C; }[] >key : string >Seq : any map(mapper: (value: V, key: K, iter: this) => M, context?: any): Seq.Keyed; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any >Seq : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Seq.Keyed; >mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed >mapper : (key: K, value: V, iter: this) => M >key : K >value : V >iter : this >context : any >Seq : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Seq.Keyed; >mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number >iter : this >context : any >Seq : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Seq.Keyed; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any >Seq : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq.Keyed; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any >Seq : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any } module Indexed { >Indexed : typeof Indexed function of(...values: Array): Seq.Indexed; >of : (...values: T[]) => Indexed >values : T[] >Seq : any } export function Indexed(): Seq.Indexed; >Indexed : typeof Indexed >Seq : any export function Indexed(): Seq.Indexed; >Indexed : typeof Indexed >Seq : any export function Indexed(collection: Iterable): Seq.Indexed; >Indexed : typeof Indexed >collection : Iterable >Seq : any export interface Indexed extends Seq, Collection.Indexed { >Collection : typeof Collection toJS(): Array; >toJS : () => any[] toJSON(): Array; >toJSON : () => T[] toSeq(): this; >toSeq : () => this concat(...valuesOrCollections: Array | C>): Seq.Indexed; >concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed >valuesOrCollections : (C | Iterable)[] >Seq : any map(mapper: (value: T, key: number, iter: this) => M, context?: any): Seq.Indexed; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed >mapper : (value: T, key: number, iter: this) => M >value : T >key : number >iter : this >context : any >Seq : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Seq.Indexed; >flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number >iter : this >context : any >Seq : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Seq.Indexed; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number >iter : this >context : any >Seq : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number >iter : this >context : any } export module Set { >Set : typeof Set function of(...values: Array): Seq.Set; >of : (...values: T[]) => Set >values : T[] >Seq : any } export function Set(): Seq.Set; >Set : typeof Set >Seq : any export function Set(): Seq.Set; >Set : typeof Set >Seq : any export function Set(collection: Iterable): Seq.Set; >Set : typeof Set >collection : Iterable >Seq : any export interface Set extends Seq, Collection.Set { >Collection : typeof Collection toJS(): Array; >toJS : () => any[] toJSON(): Array; >toJSON : () => T[] toSeq(): this; >toSeq : () => this concat(...valuesOrCollections: Array | C>): Seq.Set; >concat : (...valuesOrCollections: (C | Iterable)[]) => Set >valuesOrCollections : (C | Iterable)[] >Seq : any map(mapper: (value: T, key: never, iter: this) => M, context?: any): Seq.Set; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set >mapper : (value: T, key: never, iter: this) => M >value : T >key : never >iter : this >context : any >Seq : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Seq.Set; >flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never >iter : this >context : any >Seq : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Seq.Set; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never >iter : this >context : any >Seq : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never >iter : this >context : any } } export function Seq>(seq: S): S; >Seq : typeof Seq >seq : S export function Seq(collection: Collection.Keyed): Seq.Keyed; >Seq : typeof Seq >collection : Collection.Keyed >Collection : any >Seq : any export function Seq(collection: Collection.Indexed): Seq.Indexed; >Seq : typeof Seq >collection : Collection.Indexed >Collection : any >Seq : any export function Seq(collection: Collection.Set): Seq.Set; >Seq : typeof Seq >collection : Collection.Set >Collection : any >Seq : any export function Seq(collection: Iterable): Seq.Indexed; >Seq : typeof Seq >collection : Iterable >Seq : any export function Seq(obj: {[key: string]: V}): Seq.Keyed; >Seq : typeof Seq >obj : { [key: string]: V; } >key : string >Seq : any export function Seq(): Seq; >Seq : typeof Seq export interface Seq extends Collection { readonly size: number | undefined; >size : number // Force evaluation cacheResult(): this; >cacheResult : () => this // Sequence algorithms map(mapper: (value: V, key: K, iter: this) => M, context?: any): Seq; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Seq >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Seq; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Seq >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Seq; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any } export module Collection { >Collection : typeof Collection function isKeyed(maybeKeyed: any): maybeKeyed is Collection.Keyed; >isKeyed : (maybeKeyed: any) => maybeKeyed is Keyed >maybeKeyed : any >Collection : any function isIndexed(maybeIndexed: any): maybeIndexed is Collection.Indexed; >isIndexed : (maybeIndexed: any) => maybeIndexed is Indexed >maybeIndexed : any >Collection : any function isAssociative(maybeAssociative: any): maybeAssociative is Collection.Keyed | Collection.Indexed; >isAssociative : (maybeAssociative: any) => maybeAssociative is Indexed | Keyed >maybeAssociative : any >Collection : any >Collection : any function isOrdered(maybeOrdered: any): boolean; >isOrdered : (maybeOrdered: any) => boolean >maybeOrdered : any export module Keyed {} export function Keyed(collection: Iterable<[K, V]>): Collection.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } >collection : Iterable<[K, V]> >Collection : any export function Keyed(obj: {[key: string]: V}): Collection.Keyed; >Keyed : { (collection: Iterable<[K, V]>): Keyed; (obj: { [key: string]: V; }): Keyed; } >obj : { [key: string]: V; } >key : string >Collection : any export interface Keyed extends Collection { toJS(): Object; >toJS : () => Object toJSON(): { [key: string]: V }; >toJSON : () => { [key: string]: V; } >key : string toSeq(): Seq.Keyed; >toSeq : () => Seq.Keyed >Seq : any // Sequence functions flip(): this; >flip : () => this concat(...collections: Array>): Collection.Keyed; >concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } >collections : Iterable<[KC, VC]>[] >Collection : any concat(...collections: Array<{[key: string]: C}>): Collection.Keyed; >concat : { (...collections: Iterable<[KC, VC]>[]): Keyed; (...collections: { [key: string]: C; }[]): Keyed; } >collections : { [key: string]: C; }[] >key : string >Collection : any map(mapper: (value: V, key: K, iter: this) => M, context?: any): Collection.Keyed; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Keyed >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any >Collection : any mapKeys(mapper: (key: K, value: V, iter: this) => M, context?: any): Collection.Keyed; >mapKeys : (mapper: (key: K, value: V, iter: this) => M, context?: any) => Keyed >mapper : (key: K, value: V, iter: this) => M >key : K >value : V >iter : this >context : any >Collection : any mapEntries(mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any): Collection.Keyed; >mapEntries : (mapper: (entry: [K, V], index: number, iter: this) => [KM, VM], context?: any) => Keyed >mapper : (entry: [K, V], index: number, iter: this) => [KM, VM] >entry : [K, V] >index : number >iter : this >context : any >Collection : any flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection.Keyed; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Keyed >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any >Collection : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection.Keyed; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any >Collection : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Keyed; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any [Symbol.iterator](): IterableIterator<[K, V]>; >[Symbol.iterator] : () => IterableIterator<[K, V]> >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol } export module Indexed {} export function Indexed(collection: Iterable): Collection.Indexed; >Indexed : (collection: Iterable) => Indexed >collection : Iterable >Collection : any export interface Indexed extends Collection { toJS(): Array; >toJS : () => any[] toJSON(): Array; >toJSON : () => T[] // Reading values get(index: number, notSetValue: NSV): T | NSV; >get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T; } >index : number >notSetValue : NSV get(index: number): T | undefined; >get : { (index: number, notSetValue: NSV): T | NSV; (index: number): T; } >index : number // Conversion to Seq toSeq(): Seq.Indexed; >toSeq : () => Seq.Indexed >Seq : any fromEntrySeq(): Seq.Keyed; >fromEntrySeq : () => Seq.Keyed >Seq : any // Combination interpose(separator: T): this; >interpose : (separator: T) => this >separator : T interleave(...collections: Array>): this; >interleave : (...collections: Collection[]) => this >collections : Collection[] splice(index: number, removeNum: number, ...values: Array): this; >splice : (index: number, removeNum: number, ...values: T[]) => this >index : number >removeNum : number >values : T[] zip(...collections: Array>): Collection.Indexed; >zip : (...collections: Collection[]) => Indexed >collections : Collection[] >Collection : any zipWith(zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Collection.Indexed; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } >zipper : (value: T, otherValue: U) => Z >value : T >otherValue : U >otherCollection : Collection >Collection : any zipWith(zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Collection.Indexed; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } >zipper : (value: T, otherValue: U, thirdValue: V) => Z >value : T >otherValue : U >thirdValue : V >otherCollection : Collection >thirdCollection : Collection >Collection : any zipWith(zipper: (...any: Array) => Z, ...collections: Array>): Collection.Indexed; >zipWith : { (zipper: (value: T, otherValue: U) => Z, otherCollection: Collection): Indexed; (zipper: (value: T, otherValue: U, thirdValue: V) => Z, otherCollection: Collection, thirdCollection: Collection): Indexed; (zipper: (...any: any[]) => Z, ...collections: Collection[]): Indexed; } >zipper : (...any: any[]) => Z >any : any[] >collections : Collection[] >Collection : any // Search for value indexOf(searchValue: T): number; >indexOf : (searchValue: T) => number >searchValue : T lastIndexOf(searchValue: T): number; >lastIndexOf : (searchValue: T) => number >searchValue : T findIndex(predicate: (value: T, index: number, iter: this) => boolean, context?: any): number; >findIndex : (predicate: (value: T, index: number, iter: this) => boolean, context?: any) => number >predicate : (value: T, index: number, iter: this) => boolean >value : T >index : number >iter : this >context : any findLastIndex(predicate: (value: T, index: number, iter: this) => boolean, context?: any): number; >findLastIndex : (predicate: (value: T, index: number, iter: this) => boolean, context?: any) => number >predicate : (value: T, index: number, iter: this) => boolean >value : T >index : number >iter : this >context : any // Sequence algorithms concat(...valuesOrCollections: Array | C>): Collection.Indexed; >concat : (...valuesOrCollections: (C | Iterable)[]) => Indexed >valuesOrCollections : (C | Iterable)[] >Collection : any map(mapper: (value: T, key: number, iter: this) => M, context?: any): Collection.Indexed; >map : (mapper: (value: T, key: number, iter: this) => M, context?: any) => Indexed >mapper : (value: T, key: number, iter: this) => M >value : T >key : number >iter : this >context : any >Collection : any flatMap(mapper: (value: T, key: number, iter: this) => Iterable, context?: any): Collection.Indexed; >flatMap : (mapper: (value: T, key: number, iter: this) => Iterable, context?: any) => Indexed >mapper : (value: T, key: number, iter: this) => Iterable >value : T >key : number >iter : this >context : any >Collection : any filter(predicate: (value: T, index: number, iter: this) => value is F, context?: any): Collection.Indexed; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => value is F >value : T >index : number >iter : this >context : any >Collection : any filter(predicate: (value: T, index: number, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, index: number, iter: this) => value is F, context?: any): Indexed; (predicate: (value: T, index: number, iter: this) => any, context?: any): this; } >predicate : (value: T, index: number, iter: this) => any >value : T >index : number >iter : this >context : any [Symbol.iterator](): IterableIterator; >[Symbol.iterator] : () => IterableIterator >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol } export module Set {} export function Set(collection: Iterable): Collection.Set; >Set : (collection: Iterable) => Set >collection : Iterable >Collection : any export interface Set extends Collection { toJS(): Array; >toJS : () => any[] toJSON(): Array; >toJSON : () => T[] toSeq(): Seq.Set; >toSeq : () => Seq.Set >Seq : any // Sequence algorithms concat(...valuesOrCollections: Array | C>): Collection.Set; >concat : (...valuesOrCollections: (C | Iterable)[]) => Set >valuesOrCollections : (C | Iterable)[] >Collection : any map(mapper: (value: T, key: never, iter: this) => M, context?: any): Collection.Set; >map : (mapper: (value: T, key: never, iter: this) => M, context?: any) => Set >mapper : (value: T, key: never, iter: this) => M >value : T >key : never >iter : this >context : any >Collection : any flatMap(mapper: (value: T, key: never, iter: this) => Iterable, context?: any): Collection.Set; >flatMap : (mapper: (value: T, key: never, iter: this) => Iterable, context?: any) => Set >mapper : (value: T, key: never, iter: this) => Iterable >value : T >key : never >iter : this >context : any >Collection : any filter(predicate: (value: T, key: never, iter: this) => value is F, context?: any): Collection.Set; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => value is F >value : T >key : never >iter : this >context : any >Collection : any filter(predicate: (value: T, key: never, iter: this) => any, context?: any): this; >filter : { (predicate: (value: T, key: never, iter: this) => value is F, context?: any): Set; (predicate: (value: T, key: never, iter: this) => any, context?: any): this; } >predicate : (value: T, key: never, iter: this) => any >value : T >key : never >iter : this >context : any [Symbol.iterator](): IterableIterator; >[Symbol.iterator] : () => IterableIterator >Symbol.iterator : symbol >Symbol : SymbolConstructor >iterator : symbol } } export function Collection>(collection: I): I; >Collection : typeof Collection >collection : I export function Collection(collection: Iterable): Collection.Indexed; >Collection : typeof Collection >collection : Iterable >Collection : any export function Collection(obj: {[key: string]: V}): Collection.Keyed; >Collection : typeof Collection >obj : { [key: string]: V; } >key : string >Collection : any export interface Collection extends ValueObject { // Value equality equals(other: any): boolean; >equals : (other: any) => boolean >other : any hashCode(): number; >hashCode : () => number // Reading values get(key: K, notSetValue: NSV): V | NSV; >get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V; } >key : K >notSetValue : NSV get(key: K): V | undefined; >get : { (key: K, notSetValue: NSV): V | NSV; (key: K): V; } >key : K has(key: K): boolean; >has : (key: K) => boolean >key : K includes(value: V): boolean; >includes : (value: V) => boolean >value : V contains(value: V): boolean; >contains : (value: V) => boolean >value : V first(): V | undefined; >first : () => V last(): V | undefined; >last : () => V // Reading deep values getIn(searchKeyPath: Iterable, notSetValue?: any): any; >getIn : (searchKeyPath: Iterable, notSetValue?: any) => any >searchKeyPath : Iterable >notSetValue : any hasIn(searchKeyPath: Iterable): boolean; >hasIn : (searchKeyPath: Iterable) => boolean >searchKeyPath : Iterable // Persistent changes update(updater: (value: this) => R): R; >update : (updater: (value: this) => R) => R >updater : (value: this) => R >value : this // Conversion to JavaScript types toJS(): Array | { [key: string]: any }; >toJS : () => any[] | { [key: string]: any; } >key : string toJSON(): Array | { [key: string]: V }; >toJSON : () => V[] | { [key: string]: V; } >key : string toArray(): Array; >toArray : () => V[] toObject(): { [key: string]: V }; >toObject : () => { [key: string]: V; } >key : string // Conversion to Collections toMap(): Map; >toMap : () => Map toOrderedMap(): OrderedMap; >toOrderedMap : () => OrderedMap toSet(): Set; >toSet : () => Set toOrderedSet(): OrderedSet; >toOrderedSet : () => OrderedSet toList(): List; >toList : () => List toStack(): Stack; >toStack : () => Stack // Conversion to Seq toSeq(): this; >toSeq : () => this toKeyedSeq(): Seq.Keyed; >toKeyedSeq : () => Seq.Keyed >Seq : any toIndexedSeq(): Seq.Indexed; >toIndexedSeq : () => Seq.Indexed >Seq : any toSetSeq(): Seq.Set; >toSetSeq : () => Seq.Set >Seq : any // Iterators keys(): IterableIterator; >keys : () => IterableIterator values(): IterableIterator; >values : () => IterableIterator entries(): IterableIterator<[K, V]>; >entries : () => IterableIterator<[K, V]> // Collections (Seq) keySeq(): Seq.Indexed; >keySeq : () => Seq.Indexed >Seq : any valueSeq(): Seq.Indexed; >valueSeq : () => Seq.Indexed >Seq : any entrySeq(): Seq.Indexed<[K, V]>; >entrySeq : () => Seq.Indexed<[K, V]> >Seq : any // Sequence algorithms map(mapper: (value: V, key: K, iter: this) => M, context?: any): Collection; >map : (mapper: (value: V, key: K, iter: this) => M, context?: any) => Collection >mapper : (value: V, key: K, iter: this) => M >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => value is F >value : V >key : K >iter : this >context : any filter(predicate: (value: V, key: K, iter: this) => any, context?: any): this; >filter : { (predicate: (value: V, key: K, iter: this) => value is F, context?: any): Collection; (predicate: (value: V, key: K, iter: this) => any, context?: any): this; } >predicate : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any filterNot(predicate: (value: V, key: K, iter: this) => boolean, context?: any): this; >filterNot : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => this >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any reverse(): this; >reverse : () => this sort(comparator?: (valueA: V, valueB: V) => number): this; >sort : (comparator?: (valueA: V, valueB: V) => number) => this >comparator : (valueA: V, valueB: V) => number >valueA : V >valueB : V sortBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): this; >sortBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => this >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K >iter : this >comparator : (valueA: C, valueB: C) => number >valueA : C >valueB : C groupBy(grouper: (value: V, key: K, iter: this) => G, context?: any): /*Map*/Seq.Keyed>; >groupBy : (grouper: (value: V, key: K, iter: this) => G, context?: any) => Seq.Keyed> >grouper : (value: V, key: K, iter: this) => G >value : V >key : K >iter : this >context : any >Seq : any // Side effects forEach(sideEffect: (value: V, key: K, iter: this) => any, context?: any): number; >forEach : (sideEffect: (value: V, key: K, iter: this) => any, context?: any) => number >sideEffect : (value: V, key: K, iter: this) => any >value : V >key : K >iter : this >context : any // Creating subsets slice(begin?: number, end?: number): this; >slice : (begin?: number, end?: number) => this >begin : number >end : number rest(): this; >rest : () => this butLast(): this; >butLast : () => this skip(amount: number): this; >skip : (amount: number) => this >amount : number skipLast(amount: number): this; >skipLast : (amount: number) => this >amount : number skipWhile(predicate: (value: V, key: K, iter: this) => boolean, context?: any): this; >skipWhile : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => this >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any skipUntil(predicate: (value: V, key: K, iter: this) => boolean, context?: any): this; >skipUntil : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => this >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any take(amount: number): this; >take : (amount: number) => this >amount : number takeLast(amount: number): this; >takeLast : (amount: number) => this >amount : number takeWhile(predicate: (value: V, key: K, iter: this) => boolean, context?: any): this; >takeWhile : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => this >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any takeUntil(predicate: (value: V, key: K, iter: this) => boolean, context?: any): this; >takeUntil : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => this >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any // Combination concat(...valuesOrCollections: Array): Collection; >concat : (...valuesOrCollections: any[]) => Collection >valuesOrCollections : any[] flatten(depth?: number): Collection; >flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } >depth : number flatten(shallow?: boolean): Collection; >flatten : { (depth?: number): Collection; (shallow?: boolean): Collection; } >shallow : boolean flatMap(mapper: (value: V, key: K, iter: this) => Iterable, context?: any): Collection; >flatMap : (mapper: (value: V, key: K, iter: this) => Iterable, context?: any) => Collection >mapper : (value: V, key: K, iter: this) => Iterable >value : V >key : K >iter : this >context : any // Reducing a value reduce(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; >reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V >key : K >iter : this >initialReduction : R >context : any reduce(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; >reduce : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : V | R >value : V >key : K >iter : this reduceRight(reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; >reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: R, value: V, key: K, iter: this) => R >reduction : R >value : V >key : K >iter : this >initialReduction : R >context : any reduceRight(reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; >reduceRight : { (reducer: (reduction: R, value: V, key: K, iter: this) => R, initialReduction: R, context?: any): R; (reducer: (reduction: V | R, value: V, key: K, iter: this) => R): R; } >reducer : (reduction: V | R, value: V, key: K, iter: this) => R >reduction : V | R >value : V >key : K >iter : this every(predicate: (value: V, key: K, iter: this) => boolean, context?: any): boolean; >every : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => boolean >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any some(predicate: (value: V, key: K, iter: this) => boolean, context?: any): boolean; >some : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => boolean >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any join(separator?: string): string; >join : (separator?: string) => string >separator : string isEmpty(): boolean; >isEmpty : () => boolean count(): number; >count : { (): number; (predicate: (value: V, key: K, iter: this) => boolean, context?: any): number; } count(predicate: (value: V, key: K, iter: this) => boolean, context?: any): number; >count : { (): number; (predicate: (value: V, key: K, iter: this) => boolean, context?: any): number; } >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any countBy(grouper: (value: V, key: K, iter: this) => G, context?: any): Map; >countBy : (grouper: (value: V, key: K, iter: this) => G, context?: any) => Map >grouper : (value: V, key: K, iter: this) => G >value : V >key : K >iter : this >context : any // Search for value find(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; >find : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any >notSetValue : V findLast(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): V | undefined; >findLast : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => V >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any >notSetValue : V findEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; >findEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any >notSetValue : V findLastEntry(predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V): [K, V] | undefined; >findLastEntry : (predicate: (value: V, key: K, iter: this) => boolean, context?: any, notSetValue?: V) => [K, V] >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any >notSetValue : V findKey(predicate: (value: V, key: K, iter: this) => boolean, context?: any): K | undefined; >findKey : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => K >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any findLastKey(predicate: (value: V, key: K, iter: this) => boolean, context?: any): K | undefined; >findLastKey : (predicate: (value: V, key: K, iter: this) => boolean, context?: any) => K >predicate : (value: V, key: K, iter: this) => boolean >value : V >key : K >iter : this >context : any keyOf(searchValue: V): K | undefined; >keyOf : (searchValue: V) => K >searchValue : V lastKeyOf(searchValue: V): K | undefined; >lastKeyOf : (searchValue: V) => K >searchValue : V max(comparator?: (valueA: V, valueB: V) => number): V | undefined; >max : (comparator?: (valueA: V, valueB: V) => number) => V >comparator : (valueA: V, valueB: V) => number >valueA : V >valueB : V maxBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; >maxBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K >iter : this >comparator : (valueA: C, valueB: C) => number >valueA : C >valueB : C min(comparator?: (valueA: V, valueB: V) => number): V | undefined; >min : (comparator?: (valueA: V, valueB: V) => number) => V >comparator : (valueA: V, valueB: V) => number >valueA : V >valueB : V minBy(comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number): V | undefined; >minBy : (comparatorValueMapper: (value: V, key: K, iter: this) => C, comparator?: (valueA: C, valueB: C) => number) => V >comparatorValueMapper : (value: V, key: K, iter: this) => C >value : V >key : K >iter : this >comparator : (valueA: C, valueB: C) => number >valueA : C >valueB : C // Comparison isSubset(iter: Iterable): boolean; >isSubset : (iter: Iterable) => boolean >iter : Iterable isSuperset(iter: Iterable): boolean; >isSuperset : (iter: Iterable) => boolean >iter : Iterable readonly size: number; >size : number } } declare module "immutable" { >"immutable" : typeof import("immutable") export = Immutable >Immutable : typeof Immutable }