==== tests/cases/compiler/inheritedConstructorWithRestParams2.ts (3 errors) ==== class IBaseBase { constructor(x: U) { } } interface IBase extends IBaseBase { } class BaseBase2 { constructor(x: number) { } } declare class BaseBase extends BaseBase2 implements IBase { constructor(x: T, ...y: U[]); constructor(x1: T, x2: T, ...y: U[]); constructor(x1: T, x2: U, y: T); } class Base extends BaseBase { } class Derived extends Base { } // Ok new Derived("", ""); new Derived("", 3); new Derived("", 3, 3); new Derived("", 3, 3, 3); new Derived("", 3, ""); new Derived("", "", 3); new Derived("", "", 3, 3); // Errors new Derived(3); ~ !!! Argument of type 'number' is not assignable to parameter of type 'string'. new Derived("", 3, "", 3); ~ !!! Argument of type 'number' is not assignable to parameter of type 'string'. new Derived("", 3, "", ""); ~ !!! Argument of type 'number' is not assignable to parameter of type 'string'.