export interface IArrayLike { length: number; item(index: number): T; } export default class ArrayLike { public static *from(item: IArrayLike): IterableIterator { // tslint:disable-next-line: prefer-for-of for (let i = 0; i < item.length; i++) { const element = item[i]; yield element; } } public static *fromWithIndex(item: IArrayLike): IterableIterator<{ index: number, element: T}> { // tslint:disable-next-line: prefer-for-of for (let index = 0; index < item.length; index++) { const element = item[index]; yield { index, element }; } } } export const none = {};