UNPKG

@appello/common

Version:

Common package with many useful features for web and mobile development

34 lines (33 loc) 1.46 kB
export type ElementType = HTMLElement | Element | Window | Document; export type Nullable<T> = T | null; export type NotNullable<T> = T extends null ? never : T; export type Nillable<T> = T | null | undefined; export type NotNillable<T> = T extends null | undefined ? never : T; export type Unidentifiable<T> = T | undefined; export type Negative<T> = T | undefined | null | false; export type ValueOf<T> = T[keyof T]; export type AnyObject = Record<any, any>; export type AnyPromise = Promise<any>; export type PartialRecord<T extends keyof any, K> = { [P in T]?: K; }; export type PartialDeep<T> = { [P in keyof T]?: T[P] extends object ? PartialDeep<T[P]> : T[P]; }; export type ResponseErrors = Record<string, string>; export type UnknownFunction = (...args: unknown[]) => unknown; export type AnyFunction = (...args: any[]) => any; export type PromiseType<T> = T extends Promise<infer U> ? U : T; export type RequiredKeys<T> = { [K in keyof T]-?: object extends { [P in K]: T[K]; } ? never : K; }[keyof T]; export type OptionalKeys<T> = { [K in keyof T]-?: object extends { [P in K]: T[K]; } ? K : never; }[keyof T]; export type Merge<T, K> = Omit<T, keyof K> & K; export type AsyncReturnType<T extends (...args: any) => Promise<any>> = T extends (...args: any) => Promise<infer R> ? R : any; export type FirstArgument<T extends (...args: any) => any> = T extends (arg: infer A, ...args: any) => any ? A : never;