geninq
Version:
A JavaScript version of the Linq library for Generators
20 lines (19 loc) • 1.1 kB
TypeScript
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>;
}
}