import { Func } from './Function.types'; import { KeysExcluding, KeysMatching, Obj } from './Object.types'; /** Type for TS instance narrowing */ export type ClassTyping = { __class__: T; }; /** Type for a class that returns a given interface */ export type ClassType = Func & { name: string; new (...args: any[]): T; }; /** Extracts the names of the static (class) methods of a given class */ export type StaticMethodName = KeysMatching; /** Extracts the names of the static (class) properties of a given class */ export type StaticPropsName = KeysExcluding; /** Extracts the names of the instance methods of a given class */ export type MethodName = keyof C['prototype'];