=== tests/cases/conformance/classes/mixinAbstractClasses.2.ts === interface Mixin { mixinMethod(): void; >mixinMethod : () => void } function Mixin any>(baseClass: TBaseClass): TBaseClass & (abstract new (...args: any) => Mixin) { >Mixin : any>(baseClass: TBaseClass) => TBaseClass & (abstract new (...args: any) => Mixin) >args : any >baseClass : TBaseClass >args : any // error expected: A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'. class MixinClass extends baseClass implements Mixin { >MixinClass : MixinClass >baseClass : TBaseClass mixinMethod() { >mixinMethod : () => void } } return MixinClass; >MixinClass : { new (...args: any): MixinClass; prototype: Mixin.MixinClass; } & TBaseClass } abstract class AbstractBase { >AbstractBase : AbstractBase abstract abstractBaseMethod(): void; >abstractBaseMethod : () => void } const MixedBase = Mixin(AbstractBase); >MixedBase : typeof AbstractBase & (abstract new (...args: any) => Mixin) >Mixin(AbstractBase) : typeof AbstractBase & (abstract new (...args: any) => Mixin) >Mixin : any>(baseClass: TBaseClass) => TBaseClass & (abstract new (...args: any) => Mixin) >AbstractBase : typeof AbstractBase // error expected: Non-abstract class 'DerivedFromAbstract' does not implement inherited abstract member 'abstractBaseMethod' from class 'AbstractBase & Mixin'. class DerivedFromAbstract extends MixedBase { >DerivedFromAbstract : DerivedFromAbstract >MixedBase : AbstractBase & Mixin } // error expected: Cannot create an instance of an abstract class. new MixedBase(); >new MixedBase() : any >MixedBase : typeof AbstractBase & (abstract new (...args: any) => Mixin)