UNPKG

@e-mc/types

Version:

Type definitions for E-mc.

29 lines (23 loc) 1.35 kB
type Void<T> = T | void; type Optional<T> = T | null | undefined; type Nullable<T> = { [P in keyof T]: T[P] | null; }; type Writable<T> = { -readonly [P in keyof T]: T[P] }; type KeyOfType<T, U = any, V = any> = { [K in keyof T]: K extends U ? T[K] extends V ? K : never : never }[keyof T]; type MapOfType<T, U = any, V = any> = { [K in KeyOfType<T, U, V>]: K extends U ? T[K] extends V ? T[K] : never : never }; type Constructor<out T> = new(...args: any[]) => T; type ConstructorDerived<T> = Pick<T, { [K in keyof T]: T[K] extends new() => any ? never : K }[keyof T]>; type FunctionType<T = unknown, U = unknown> = (...args: U[]) => T; type FunctionArgs<T extends unknown[], U = unknown> = (...args: T) => U; type IntBool = boolean | 0 | 1; type ArrayOf<T> = T | T[]; type FirstOf<T, U = boolean> = T extends U ? [T, ...T[]] : T[] | [U, T, ...T[]]; type Bufferable = string | Buffer; type AnyObject = Record<string, unknown>; type PlainObject = Record<string | number | symbol, unknown>; type StandardMap = Record<string, any>; type StringMap = Record<string, string | undefined>; type ObjectMap<T> = Record<string, T | undefined>; type IterableMap<T> = Record<string, T>; type PropertyAction<T, U extends string, V extends boolean = false> = { [K in keyof T as `${U}${V extends true ? string & K : Capitalize<string & K>}`]: T[K]; };