objectTypeWithRecursiveWrappedProperty2.ts(4,5): error TS2564: Property 'data' has no initializer and is not definitely assigned in the constructor.
objectTypeWithRecursiveWrappedProperty2.ts(5,5): error TS2564: Property 'next' has no initializer and is not definitely assigned in the constructor.
objectTypeWithRecursiveWrappedProperty2.ts(13,1): error TS2322: Type 'List<string>' is not assignable to type 'List<number>'.
  Type 'string' is not assignable to type 'number'.


==== objectTypeWithRecursiveWrappedProperty2.ts (3 errors) ====
    // Basic recursive type
    
    class List<T> {
        data: T;
        ~~~~
!!! error TS2564: Property 'data' has no initializer and is not definitely assigned in the constructor.
        next: List<List<T>>;
        ~~~~
!!! error TS2564: Property 'next' has no initializer and is not definitely assigned in the constructor.
    }
    
    var list1 = new List<number>();
    var list2 = new List<number>();
    var list3 = new List<string>();
    
    list1 = list2; // ok
    list1 = list3; // error
    ~~~~~
!!! error TS2322: Type 'List<string>' is not assignable to type 'List<number>'.
!!! error TS2322:   Type 'string' is not assignable to type 'number'.