UNPKG

geninq

Version:

A JavaScript version of the Linq library for Generators

20 lines (19 loc) 1.1 kB
import { Promised } from "./utils"; declare global { interface Generator<T = unknown, TReturn = any, TNext = unknown> { single(): T; single(allow_empty: "or-default"): T | undefined; single(predicate: (item: T) => boolean): T; single(predicate: (item: T) => boolean, allow_empty: "or-default"): T | undefined; single<TRes extends T>(predicate: (item: T) => item is TRes): TRes; single<TRes extends T>(predicate: (item: T) => item is TRes, allow_empty: "or-default"): TRes | undefined; } interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> { single(): Promise<T>; single(allow_empty: true): Promise<T | undefined>; single(predicate: (item: T) => Promised<boolean>): Promise<T>; single(predicate: (item: T) => Promised<boolean>, allow_empty: true): Promise<T | undefined>; single<TRes extends T>(predicate: (item: T) => item is TRes): Promise<TRes>; single<TRes extends T>(predicate: (item: T) => item is TRes, allow_empty: "or-default"): Promise<TRes | undefined>; } }