class Abstract { protected constructor() { } } class Concrete extends Abstract { } type Constructor = new (...args: any[]) => T; function Mixin(Base: TBase) { return class extends Base { }; } class Empty { } class CrashTrigger extends Mixin(Empty) { public trigger() { new Concrete(); } }