mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
parent
ec87acd45f
commit
7e4cb54a7d
39
types/lazy.js/index.d.ts
vendored
39
types/lazy.js/index.d.ts
vendored
@ -5,7 +5,7 @@
|
||||
// Gabriel Lorquet <https://github.com/gablorquet>
|
||||
// Alexey Gerasimov <https://github.com/fan-tom>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
// TypeScript Version: 2.9
|
||||
// TypeScript Version: 3.4
|
||||
|
||||
declare namespace LazyJS {
|
||||
interface LazyStatic {
|
||||
@ -136,14 +136,45 @@ declare namespace LazyJS {
|
||||
: T
|
||||
// workaround for https://github.com/microsoft/TypeScript/issues/26980
|
||||
: {
|
||||
0: T extends Sequence<infer U> ? Flatten<U, Shallow> : never;
|
||||
0: T extends Sequence<infer U>
|
||||
? Flatten<U, Shallow>
|
||||
: T extends Array<infer U>
|
||||
? Flatten<U, Shallow>
|
||||
: T extends ReadonlyArray<infer U>
|
||||
? Flatten<U, Shallow>
|
||||
: never;
|
||||
1: T;
|
||||
} [T extends Sequence<any> ? 0 : 1];
|
||||
} [T extends Sequence<any> ? 0 : T extends any[] ? 0 : T extends ReadonlyArray<any> ? 0 : 1];
|
||||
|
||||
type PushFront<TailT extends any[], FrontT> = (
|
||||
((front: FrontT, ...rest: TailT) => any) extends ((...tuple: infer TupleT) => any) ?
|
||||
TupleT :
|
||||
never
|
||||
);
|
||||
|
||||
type Tuple<ElementT, LengthT extends number, OutputT extends any[] = []> = {
|
||||
0: ElementT[],
|
||||
1: unknown,
|
||||
2: OutputT,
|
||||
3: Tuple<ElementT, LengthT, PushFront<OutputT, ElementT>>,
|
||||
}[
|
||||
// LengthT is not compile-time constant
|
||||
number extends LengthT
|
||||
? 0
|
||||
// LengthT is 0 constant, forbidden
|
||||
: LengthT extends 0
|
||||
? 1
|
||||
// LengthT = OutputT["length']
|
||||
: OutputT["length"] extends LengthT
|
||||
? 2
|
||||
// we need to go deeper
|
||||
: 3
|
||||
];
|
||||
|
||||
interface SequenceBaser<T> {
|
||||
// TODO improve define() (needs ugly overload)
|
||||
async(interval: number): AsyncSequence<T>;
|
||||
chunk(size: number): Sequence<T>;
|
||||
chunk<N extends number>(size: N): Sequence<Tuple<T, N>>;
|
||||
compact(): Sequence<T>;
|
||||
concat(var_args: T[]): Sequence<T>;
|
||||
consecutive(length: number): Sequence<T>;
|
||||
|
||||
@ -20,6 +20,8 @@ var barArr: Bar[];
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
var fooSequence: LazyJS.Sequence<Foo>;
|
||||
var fooTupleSequence: LazyJS.Sequence<readonly [Foo, Foo, Foo, Foo, Foo]>;
|
||||
var fooArrSequence: LazyJS.Sequence<Foo[]>;
|
||||
var barSequence: LazyJS.Sequence<Bar>;
|
||||
var fooArraySeq: LazyJS.ArrayLikeSequence<Foo>;
|
||||
var barArraySeq: LazyJS.ArrayLikeSequence<Bar>;
|
||||
@ -29,11 +31,13 @@ var fooAsyncSeq: LazyJS.AsyncSequence<Foo>;
|
||||
|
||||
var strSequence: LazyJS.Sequence<string>;
|
||||
var anySequence: LazyJS.Sequence<any>;
|
||||
var unknownSequence: LazyJS.Sequence<unknown>;
|
||||
var stringSeq: LazyJS.StringLikeSequence;
|
||||
|
||||
var obj: Object;
|
||||
var bool: boolean;
|
||||
var num: number;
|
||||
var const5: 5;
|
||||
var str: string;
|
||||
var x: any = null;
|
||||
var arr: any[];
|
||||
@ -97,7 +101,9 @@ fooArraySeq = Strict([foo, foo]).pop();
|
||||
// Sequence
|
||||
|
||||
fooAsyncSeq = fooSequence.async(num);
|
||||
fooSequence = fooSequence.chunk(num);
|
||||
fooArrSequence = fooSequence.chunk(num);
|
||||
fooTupleSequence = fooSequence.chunk(const5);
|
||||
unknownSequence = fooSequence.chunk(0);
|
||||
fooSequence = fooSequence.compact();
|
||||
fooSequence = fooSequence.concat(arr);
|
||||
fooSequence = fooSequence.consecutive(num);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user