typeArgumentInferenceOrdering.ts(2,5): error TS2564: Property 'y' has no initializer and is not definitely assigned in the constructor.
typeArgumentInferenceOrdering.ts(13,35): error TS2322: Type 'null' is not assignable to type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.


==== typeArgumentInferenceOrdering.ts (2 errors) ====
    class C {
        y: I;
        ~
!!! error TS2564: Property 'y' has no initializer and is not definitely assigned in the constructor.
    }
    
    interface I {
        x(): Goo;
    }
    
    interface Goo {
        p: string;
    }
    
    function foo<T>(f: { y: T }): T { return 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 x = foo(new C()).x; // was Error that property x does not exist on type {}