UNPKG

@intuitionrobotics/ts-common

Version:
66 lines 2.36 kB
export type CustomOptional<T, K> = { [P in keyof T]?: K; }; export type Subset<T> = { [P in keyof T]: T[P]; }; export type OptionalKeys<T extends object> = Exclude<{ [K in keyof T]: T extends Record<K, T[K]> ? never : K; }[keyof T], undefined>; export type MandatoryKeys<T extends object, V = any> = Exclude<{ [K in keyof T]: T extends Record<K, T[K]> ? (T[K] extends V ? K : never) : never; }[keyof T], undefined>; export type RequireOptionals<T extends object, Keys extends OptionalKeys<T> = OptionalKeys<T>> = Pick<T, Exclude<keyof T, Keys>> & { [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>; }[Keys]; export type RequireOneOptional<T extends object, Keys extends OptionalKeys<T> = OptionalKeys<T>> = Pick<T, Exclude<keyof T, Keys>> & { [K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, undefined>>; }[Keys]; export type Constructor<T> = new (...args: any) => T; export type ArrayType<T extends any[]> = T extends (infer I)[] ? I : never; export type PartialProperties<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>; export type Identity = { id: string; }; export type StringMap = { [s: string]: string; }; export type ObjectTS = { [s: string]: any; }; export type TypedMap<ValueType> = { [s: string]: ValueType; }; export type DB_Object = { _id: string; }; export type Auditable = { _audit?: AuditBy; }; export type AuditBy = { comment?: string; auditBy: string; auditAt: Timestamp; }; export type Timestamp = { timestamp: number; pretty: string; timezone?: string; }; export type FunctionKeys<T> = { [K in keyof T]: T[K] extends (...args: any) => any ? K : never; }[keyof T]; export type ParamResolver<T, K extends keyof T> = T[K] extends (...args: any) => any ? Parameters<T[K]> : never; export type ReturnTypeResolver<T, K extends keyof T> = T[K] extends (...args: any) => any ? ReturnPromiseType<T[K]> : never; export declare const Void: void; export type PackageJson = { version: string; name: string; }; export type DeflatePromise<T> = T extends Promise<infer A> ? A : T; export type ReturnPromiseType<T extends (...args: any) => any> = T extends (...args: any) => infer R ? DeflatePromise<R> : never; export type RangeTimestamp = { min: number; max: number; }; //# sourceMappingURL=types.d.ts.map