unionTypeWithRecursiveSubtypeReduction1.ts(2,12): error TS2564: Property 'members' has no initializer and is not definitely assigned in the constructor.
unionTypeWithRecursiveSubtypeReduction1.ts(6,12): error TS2564: Property 'members' has no initializer and is not definitely assigned in the constructor.
unionTypeWithRecursiveSubtypeReduction1.ts(10,12): error TS2564: Property 'parent' has no initializer and is not definitely assigned in the constructor.
unionTypeWithRecursiveSubtypeReduction1.ts(14,12): error TS2564: Property 'parent' has no initializer and is not definitely assigned in the constructor.
unionTypeWithRecursiveSubtypeReduction1.ts(18,1): error TS2454: Variable 't' is used before being assigned.


==== unionTypeWithRecursiveSubtypeReduction1.ts (5 errors) ====
    class Module {
        public members: Class[];
               ~~~~~~~
!!! error TS2564: Property 'members' has no initializer and is not definitely assigned in the constructor.
    }
    
    class Namespace {
        public members: (Class | Property)[];
               ~~~~~~~
!!! error TS2564: Property 'members' has no initializer and is not definitely assigned in the constructor.
    }
    
    class Class {
        public parent: Namespace;
               ~~~~~~
!!! error TS2564: Property 'parent' has no initializer and is not definitely assigned in the constructor.
    }
    
    class Property {
        public parent: Module | Class;
               ~~~~~~
!!! error TS2564: Property 'parent' has no initializer and is not definitely assigned in the constructor.
    }
    
    var t: Class | Property;
    t.parent;
    ~
!!! error TS2454: Variable 't' is used before being assigned.
    