export type Methods = {[M in keyof T]: T[M] extends (...a: any) => any ? M : never}[keyof T] export type AddPostfix = `${T}${P}` export interface Type extends Function { new(...args: any[]): T; }