geninq
Version:
A JavaScript version of the Linq library for Generators
20 lines (19 loc) • 1.53 kB
TypeScript
import { Promised } from "./utils";
import "./select";
import "./array";
declare global {
interface Generator<T = unknown, TReturn = any, TNext = unknown> {
order_by(this: Generator<number, TReturn, TNext>, descending?: "descending"): Generator<T, TReturn, TNext>;
order_by(this: Generator<string, TReturn, TNext>, descending?: "descending"): Generator<T, TReturn, TNext>;
order_by(key_selector: (item: T) => number, descending?: "descending"): Generator<T, TReturn, TNext>;
order_by(key_selector: (item: T) => string, descending?: "descending"): Generator<T, TReturn, TNext>;
order_by<TKey>(key_selector: (item: T) => TKey, comparitor: (a: TKey, b: TKey) => boolean, descending?: "descending"): Generator<T, TReturn, TNext>;
}
interface AsyncGenerator<T = unknown, TReturn = any, TNext = unknown> {
order_by(this: AsyncGenerator<number, TReturn, TNext>, descending?: "descending"): AsyncGenerator<T, TReturn, TNext>;
order_by(this: AsyncGenerator<string, TReturn, TNext>, descending?: "descending"): AsyncGenerator<T, TReturn, TNext>;
order_by(key_selector: (item: T) => Promised<number>, descending?: "descending"): AsyncGenerator<T, TReturn, TNext>;
order_by(key_selector: (item: T) => Promised<string>, descending?: "descending"): AsyncGenerator<T, TReturn, TNext>;
order_by<TKey>(key_selector: (item: T) => Promised<TKey>, comparitor: (a: TKey, b: TKey) => boolean, descending?: "descending"): AsyncGenerator<T, TReturn, TNext>;
}
}