@appello/common
Version:
Common package with many useful features for web and mobile development
34 lines (33 loc) • 1.46 kB
TypeScript
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;