import { BaseIterator } from '../implements/index'; import { IIterator } from '../intefaces'; export class AggregateClause extends BaseIterator implements IIterator{ _iterator: (accumulator: T, inital: T, index?: number) => any; execute(source: T[]): any { return source.reduce((pre, cur, index) => { return this._iterator(pre, cur, index); }); } constructor(iterator: (accumulator: T, inital: T, index?: number) => any) { super(); this._iterator = iterator; } }