derivedClassWithoutExplicitConstructor2.ts(13,9): error TS2554: Expected 1-3 arguments, but got 0.
derivedClassWithoutExplicitConstructor2.ts(27,5): error TS2322: Type 'null' is not assignable to type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.
derivedClassWithoutExplicitConstructor2.ts(30,9): error TS2554: Expected 1-3 arguments, but got 0.


==== derivedClassWithoutExplicitConstructor2.ts (3 errors) ====
    class Base {
        a = 1;
        constructor(x: number, y?: number, z?: number);
        constructor(x: number, y?: number);
        constructor(x: number) { this.a = x; }
    }
    
    class Derived extends Base {
        x = 1
        y = 'hello';
    }
    
    var r = new Derived(); // error
            ~~~~~~~~~~~~~
!!! error TS2554: Expected 1-3 arguments, but got 0.
!!! related TS6210 derivedClassWithoutExplicitConstructor2.ts:3:17: An argument for 'x' was not provided.
    var r2 = new Derived(1); 
    var r3 = new Derived(1, 2);
    var r4 = new Derived(1, 2, 3);
    
    class Base2<T> {
        a: T;
        constructor(x: T, y?: T, z?: T);
        constructor(x: T, y?: T);
        constructor(x: T) { this.a = x; }
    }
    
    class D<T extends Date> extends Base2<T> {
        x = 2
        y: T = null;
        ~
!!! error TS2322: Type 'null' is not assignable to type 'T'.
!!! error TS2322:   'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.
    }
    
    var d = new D(); // error
            ~~~~~~~
!!! error TS2554: Expected 1-3 arguments, but got 0.
!!! related TS6210 derivedClassWithoutExplicitConstructor2.ts:20:17: An argument for 'x' was not provided.
    var d2 = new D(new Date()); // ok
    var d3 = new D(new Date(), new Date());
    var d4 = new D(new Date(), new Date(), new Date());