Skip to content

Commit

Permalink
chore: Added new types
Browse files Browse the repository at this point in the history
  • Loading branch information
djalmajr committed May 28, 2022
1 parent 9a8df8e commit 4e6396b
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion src/types.d.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
export declare type Any = any; // eslint-disable-line

export declare type PropKey = number | string;

export declare type Fn<A extends unknown[], R> = (...args: A) => R;

export declare type Obj<T = unknown> = Record<string, T>;
export declare type Obj<T = Any> = Record<PropKey, T>;

export declare type ValueOf<T> = T[keyof T];

export declare type Constructor<T> = new (...args: Any[]) => T;

export declare type SameLength<T extends Any[]> = Extract<{ [K in keyof T]: Any }, Any[]>;

export declare type Curried<A extends Any[], R> = <P extends Partial<A>>(
...args: P
) => P extends A
? R
: A extends [...SameLength<P>, ...infer S]
? S extends Any[]
? Curried<S, R>
: never
: never;

export declare type Head<T extends Any[]> = T extends [Any, ...Any[]] ? T[0] : never;

export declare type Tail<T extends Any[]> = ((...t: T) => Any) extends (
Expand Down

0 comments on commit 4e6396b

Please sign in to comment.