@uk/tool
Version:
Uk tools module
18 lines (15 loc) • 905 B
TypeScript
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>;
}