packageDocumentation module public export type Mutable < T > = { - readonly [ K in keyof T ] : T [ K ] ; } ; public export type Optional < T , K extends keyof T > = Pick < Partial < T > , K > & Omit < T , K > ; public export type MarkRequired < T , K extends keyof T > = Pick < Required < T > , K > & Omit < T , K > ; note see see public export type Constructor < T > = new ( ... args ) => T ; see public export function isInstanceOf < T > ( obj , constructor ) { return "object" === typeof obj && obj instanceof constructor ; } see public export function asInstanceOf < T > ( obj , constructor ) { return isInstanceOf < T > ( obj , constructor ) ? obj as T : undefined ; } see public export type NonFunctionPropertyNamesOf < T > = { [ K in keyof T ] : T [ K ] extends Function ? never : K ; } [ keyof T ] ; see public export type NonFunctionPropertiesOf < T > = Pick < T , NonFunctionPropertyNamesOf < T > > ; see see public export type AsyncFunction = ( ... args : any ) => Promise < any > ; public export type AsyncMethodsOf < T > = { [ P in keyof T ] : T [ P ] extends AsyncFunction ? P : never ; } [ keyof T ] ; public export type PromiseReturnType < T extends AsyncFunction > = T extends ( ... args : any ) => Promise < infer R > ? R : any ;