ts-generic-collections-linq
Version:
TypeScript library provides strongly-typed, queryable collections.
42 lines (41 loc) • 1.91 kB
TypeScript
export interface IEnumerable<T> {
elementAt(index: number): T;
any(predicate?: (item: T) => boolean): boolean;
all(predicate?: (item: T) => boolean): boolean;
single(predicate?: (item: T) => boolean): T;
first(predicate?: (item: T) => boolean): T;
last(predicate?: (item: T) => boolean): T;
singleOrDefault(predicate: (item: T) => boolean): T;
firstOrDefault(predicate: (item: T) => boolean): T;
lastOrDefault(predicate: (item: T) => boolean): T;
where(predicate: (item: T) => boolean): IEnumerable<T>;
select<TResult>(predicate: (item: T) => TResult): IEnumerable<TResult>;
selectMany<TResult>(predicate: (item: T) => Array<TResult>): IEnumerable<TResult>;
join<TOuter, TMatch, TResult>(outer: IEnumerable<TOuter>, conditionInner: (item: T) => TMatch, conditionOuter: (item: TOuter) => TMatch, select: (x: T, y: TOuter) => TResult, leftJoin?: boolean): IEnumerable<TResult>;
groupBy(predicate: (item: T) => Array<any>): IEnumerable<IGroup<T>>;
orderBy(comparer: IComparer<T>): IEnumerable<T>;
distinct(comparer: IEqualityComparer<T>): IEnumerable<T>;
union(list: IEnumerable<T>): IEnumerable<T>;
reverse(): IEnumerable<T>;
skip(no: number): IEnumerable<T>;
take(no: number): IEnumerable<T>;
sum(predicate: (item: T) => number): number;
avg(predicate: (item: T) => number): number;
min(predicate: (item: T) => number): number;
max(predicate: (item: T) => number): number;
count(predicate?: (item: T) => boolean): number;
forEach(predicate: (item: T) => void): void;
length: number;
toArray(): Array<T>;
asEnumerable(): IEnumerable<T>;
}
export interface IGroup<T> {
groups: any[];
list: IEnumerable<T>;
}
export interface IComparer<T> {
compare(x: T, y: T): number;
}
export interface IEqualityComparer<T> {
equals(x: T, y: T): boolean;
}