New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@trezor/type-utils

Package Overview
Dependencies
Maintainers
4
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@trezor/type-utils - npm Package Compare versions

Comparing version 1.1.3 to 1.1.4-beta.1

src/array.ts

2

package.json
{
"name": "@trezor/type-utils",
"version": "1.1.3",
"version": "1.1.4-beta.1",
"license": "See LICENSE.md in repo root",

@@ -5,0 +5,0 @@ "sideEffects": false,

@@ -0,2 +1,5 @@

export * from './array';
export * from './overloads';
export * from './timeout';
export * from './utils';
export * from './timeout';
export * from './object';

@@ -1,18 +0,53 @@

// make key required
/**
* Make property of the object required.
*
* Example:
* ```
* type T = { a?: number };
* const t: RequiredKey<T, 'a'> = { a: 0 }; // 'a' is mandatory
* ```
*/
export type RequiredKey<M, K extends keyof M> = Omit<M, K> & Required<Pick<M, K>>;
// object values types
/**
* Get type of the object values.
*
* Example:
* ```
* type T = { a: number; b: string };
* type V: ObjectValues<T>; // number | string
* ```
*/
export type ObjectValues<T extends { [key: string]: any }> = T[keyof T];
// all keys of types in an union
/**
* All keys of types in a union.
*
* Example:
* ```
* type T = { a: number; b: string };
* type K: Keys<T>; // 'a' | 'b'
* ```
*/
export type Keys<T> = T extends any ? keyof T : never;
// remove the keys while keeping the union
/**
* Distributes the Omit across a union. using distributive conditional types to achieve this:
* @see: https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types
* @source: https://stackoverflow.com/questions/57103834/typescript-omit-a-property-from-all-interfaces-in-a-union-but-keep-the-union-s#answer-57103940
*
* Example:
* ```
* type T = { remove: string; keep1: number } | { remove: string; keep2: boolean };
* type W = Without<T, 'remove'>;
* const w: W = { keep1: 1, keep2: true };
* ```
*/
export type Without<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
// array element type
export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType[number];
// const with optional types
/**
* Const with optional types.
* Todo: add example and better explanation.
* It has exactly 1 usage so maybe this shall even be here in the utils package
*/
export type ConstWithOptionalFields<

@@ -33,12 +68,13 @@ Const extends { [key: string]: any },

// Extract item from union
export type ItemExtractor<M> = Extract<M, { type: M }>;
// Unwrap type from Promise
export type Await<T> = T extends {
then(onfulfilled?: (value: infer U) => unknown): unknown;
}
? U
: T;
/**
* Recursively makes all properties of the object optional. If the nested property is an object,
* it will make its properties optional as well.
*
* Example:
* ```
* type T = { a: number; b: { c: string; d: number } };
* type P = DeepPartial<T>;
* const p: P = { b: { d: 1 } }; // As everything is deeply optional
* ```
*/
export type DeepPartial<T> = T extends () => any

@@ -50,739 +86,27 @@ ? T

/**
* Type containing all primitive types in TypeScript.
*/
export type PrimitiveType = string | number | boolean | Date | null | undefined;
// Record<K, T> with optional key and required value.
// example of using partial union as keys:
// const p: PartialRecord<'a' | 'b' | 'c', string>; = { b: 'value' };
export type PartialRecord<K extends keyof any, T> = {
[P in K]?: T;
};
/**
* Record<K, T> with optional key and required value.
*
* Example:
* ```
* const p: PartialRecord<'a' | 'b' | 'c', string>; = { b: 'value' };
* ```
*/
export type PartialRecord<K extends keyof any, T> = { [P in K]?: T };
// distributive conditional types to the rescue! This way we can infer union literal type from ReturnType but exclude undefined
/**
* This infers the union literal type from ReturnType but exclude undefined
*/
export type DefinedUnionMember<T> = T extends string ? T : never;
export type GetObjectWithKey<U, K extends PropertyKey> = U extends object
? K extends keyof U
? U
: never
: never;
export type GetObjectWithoutKey<U, K extends PropertyKey> = U extends object
? K extends keyof U
? never
: U
: never;
export type ObjectsOnly<T> = T extends Record<string, unknown> ? T : never;
// map object `T` to a narrowed type with only those entries that match given `ValueFilter` type
/**
* Map object `T` to a narrowed type with only those entries that match given `ValueFilter` type
*/
export type FilterPropertiesByType<T, ValueFilter> = {
[Key in keyof T as T[Key] extends ValueFilter ? Key : never]: T[Key];
};
export type OverloadImplementations<T, U extends keyof T> = Overloads<T[U]>;
export type Overloads<T> = Overloads24<T>;
type Overloads24<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
(...args: infer A20): infer R20;
(...args: infer A21): infer R21;
(...args: infer A22): infer R22;
(...args: infer A23): infer R23;
(...args: infer A24): infer R24;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
(...args: A20) => R20,
(...args: A21) => R21,
(...args: A22) => R22,
(...args: A23) => R23,
(...args: A24) => R24,
]
: Overloads23<T>;
type Overloads23<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
(...args: infer A20): infer R20;
(...args: infer A21): infer R21;
(...args: infer A22): infer R22;
(...args: infer A23): infer R23;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
(...args: A20) => R20,
(...args: A21) => R21,
(...args: A22) => R22,
(...args: A23) => R23,
]
: Overloads22<T>;
type Overloads22<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
(...args: infer A20): infer R20;
(...args: infer A21): infer R21;
(...args: infer A22): infer R22;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
(...args: A20) => R20,
(...args: A21) => R21,
(...args: A22) => R22,
]
: Overloads21<T>;
type Overloads21<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
(...args: infer A20): infer R20;
(...args: infer A21): infer R21;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
(...args: A20) => R20,
(...args: A21) => R21,
]
: Overloads20<T>;
type Overloads20<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
(...args: infer A20): infer R20;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
(...args: A20) => R20,
]
: Overloads19<T>;
type Overloads19<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
(...args: infer A19): infer R19;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
(...args: A19) => R19,
]
: Overloads18<T>;
type Overloads18<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
(...args: infer A18): infer R18;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
(...args: A18) => R18,
]
: Overloads17<T>;
type Overloads17<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
(...args: infer A17): infer R17;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
(...args: A17) => R17,
]
: Overloads16<T>;
type Overloads16<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
(...args: infer A16): infer R16;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
(...args: A16) => R16,
]
: Overloads15<T>;
type Overloads15<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
(...args: infer A15): infer R15;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
(...args: A15) => R15,
]
: Overloads14<T>;
type Overloads14<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
(...args: infer A14): infer R14;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
(...args: A14) => R14,
]
: Overloads13<T>;
type Overloads13<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
(...args: infer A13): infer R13;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
(...args: A13) => R13,
]
: Overloads12<T>;
type Overloads12<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
(...args: infer A12): infer R12;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
(...args: A12) => R12,
]
: Overloads11<T>;
type Overloads11<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
(...args: infer A11): infer R11;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
(...args: A11) => R11,
]
: Overloads10<T>;
type Overloads10<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
(...args: infer A10): infer R10;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
(...args: A10) => R10,
]
: Overloads9<T>;
type Overloads9<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
(...args: infer A9): infer R9;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
(...args: A9) => R9,
]
: Overloads8<T>;
type Overloads8<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
(...args: infer A8): infer R8;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
(...args: A8) => R8,
]
: Overloads7<T>;
type Overloads7<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
(...args: infer A7): infer R7;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
(...args: A7) => R7,
]
: Overloads6<T>;
type Overloads6<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
(...args: infer A6): infer R6;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
(...args: A6) => R6,
]
: Overloads5<T>;
type Overloads5<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
(...args: infer A5): infer R5;
}
? [
(...args: A1) => R1,
(...args: A2) => R2,
(...args: A3) => R3,
(...args: A4) => R4,
(...args: A5) => R5,
]
: Overloads4<T>;
type Overloads4<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
(...args: infer A4): infer R4;
}
? [(...args: A1) => R1, (...args: A2) => R2, (...args: A3) => R3, (...args: A4) => R4]
: Overloads3<T>;
type Overloads3<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
(...args: infer A3): infer R3;
}
? [(...args: A1) => R1, (...args: A2) => R2, (...args: A3) => R3]
: Overloads2<T>;
type Overloads2<T> = T extends {
(...args: infer A1): infer R1;
(...args: infer A2): infer R2;
}
? [(...args: A1) => R1, (...args: A2) => R2]
: Overloads1<T>;
type Overloads1<T> = T extends {
(...args: infer A1): infer R1;
}
? [(...args: A1) => R1]
: unknown;
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc