/** * {@link Sync.Mixin} for synchronous iterables. * * See also {@link Async.Mixin} * * @module Sync.Mixin */ import { IEnhancements } from "./ienhancement"; import { Constructor, IteratorValue } from "./types"; export declare namespace Sync { /** * Given a class that implements `Iterable`, this returns a class that implements {@link IEnhancements}, allowing one to treat it as if * it were an array, in supporting methods such as {@link IEnhancements.map | .map()} and {@link IEnhancements.filter | .filter()}. * * Usage: * * ```typescript * class MySyncIterable implements Iterable { * *[Symbol.iterator]() { * yield 1; * yield 2; * yield 3; * } * } * * class MyEnhancedSyncIterable extends Sync.Mixin(MySyncIterable) { * constructor() { * super(); * } * } * const foo = new MyEnhancedSyncIterable(); * foo.map(i => i * 2).asArray(); // => [2, 4, 6] * foo.map(i => i + 2).asArray(); // => [3, 4, 5] * ``` * @param Base a constructor for a class that implements `Iterable`. * @returns a new constructor for an enhanced class. */ function Mixin>, P extends ConstructorParameters, I extends InstanceType, T extends IteratorValue, TReturn = any, TNext = undefined>(Base: B): Constructor, P>; } //# sourceMappingURL=sync-mixin.d.ts.map