typeAliases.ts(28,12): error TS2564: Property 'x' has no initializer and is not definitely assigned in the constructor.
typeAliases.ts(55,7): error TS2454: Variable 'x13_1' is used before being assigned.
typeAliases.ts(55,14): error TS2454: Variable 'x13_2' is used before being assigned.
typeAliases.ts(56,7): error TS2454: Variable 'x13_2' is used before being assigned.
typeAliases.ts(56,14): error TS2454: Variable 'x13_1' is used before being assigned.
typeAliases.ts(77,5): error TS2454: Variable 'x' is used before being assigned.


==== typeAliases.ts (6 errors) ====
    // Writing a reference to a type alias has exactly the same effect as writing the aliased type itself.
    
    type T1 = number;
    var x1: number;
    var x1: T1;
    
    type T2 = string;
    var x2: string;
    var x2: T2;
    
    type T3 = boolean;
    var x3: boolean;
    var x3: T3;
    
    type T4 = void;
    var x4: void;
    var x4: T4;
    
    type T5 = any;
    var x5: any;
    var x5: T5;
    
    interface I6 { x : string }
    type T6 = I6;
    var x6: I6;
    var x6: T6;
    
    class C7 { x: boolean }
               ~
!!! error TS2564: Property 'x' has no initializer and is not definitely assigned in the constructor.
    type T7 = C7;
    var x7: C7;
    var x7: T7;
    
    type T8 = string | boolean;
    var x8: string | boolean;
    var x8: T8;
    
    type T9 = () => string;
    var x9: () => string;
    var x9: T9;
    
    type T10 = { x: number };
    var x10: { x: number };
    var x10: T10;
    
    type T11 = { new(): boolean };
    var x11: { new(): boolean };
    var x11: T11;
    
    interface I13 { x: string };
    type T13 = I13;
    var x13_1: I13;
    var x13_2: T13
    
    declare function foo13<T1 extends I13, T2 extends T13>(t1: T1, t2: T13): void;
    foo13(x13_1, x13_2);
          ~~~~~
!!! error TS2454: Variable 'x13_1' is used before being assigned.
                 ~~~~~
!!! error TS2454: Variable 'x13_2' is used before being assigned.
    foo13(x13_2, x13_1);
          ~~~~~
!!! error TS2454: Variable 'x13_2' is used before being assigned.
                 ~~~~~
!!! error TS2454: Variable 'x13_1' is used before being assigned.
    
    type T14 = string;
    var x14: T14;
    
    declare function foo14_1(x: T14): void;
    
    declare function foo14_2(x: "click"): void;
    declare function foo14_2(x: T14): void;
    
    type Meters = number
    
    enum E { x = 10 }
    
    declare function f15(a: string): boolean;
    declare function f15(a: Meters): string;
    f15(E.x).toLowerCase();
    
    type StringAndBoolean = [string, boolean]
    declare function f16(s: StringAndBoolean): string;
    var x: [string, boolean];
    f16(x);
        ~
!!! error TS2454: Variable 'x' is used before being assigned.
    
    var y: StringAndBoolean = ["1", false];
    y[0].toLowerCase();