UNPKG

@uk/tool

Version:
18 lines (15 loc) 905 B
declare namespace Partial { export type Recursive<T extends object | null | undefined | void> = { [P in keyof T]?: T[P] extends object ? Recursive<T[P]> : T[P] } } declare namespace Readonly { export type Recursive<T extends object | null | undefined | void> = { readonly [P in keyof T]: T[P] extends object ? Recursive<T[P]> : T[P] } } declare type Writeable<T> = { -readonly [P in keyof T]: T[P] }; declare type KeysExtends<T, E> = { [K in keyof T]: T[K] extends E ? K : never }[keyof T]; declare type KeysNotExtends<T, E> = { [K in keyof T]: T[K] extends E ? never : K }[keyof T]; declare type ArgumentTypes<F extends Function> = F extends (...args: infer A) => any ? A : never; declare type FirstArgumentType<F extends Function> = F extends (arg: infer A, ...args: any[]) => any ? A : never; declare type Ctor<T> = { new(): T }; declare const uk: { noReadOnly<T>(t: T): Writeable<T>; }