type Constructor = new (...args: TA[]) => T; type ExtendTypeWith< T extends Constructor, OtherObject extends object > = Constructor & OtherObject, ConstructorParameters>; type Dictionary = { [key: string]: TYPE }; interface Extendable { [key: string]: any; }