interfaceDoesNotDependOnBaseTypes.ts(2,12): error TS2454: Variable 'x' is used before being assigned.
interfaceDoesNotDependOnBaseTypes.ts(3,5): error TS2454: Variable 'x' is used before being assigned.
interfaceDoesNotDependOnBaseTypes.ts(3,7): error TS2339: Property 'push' does not exist on type 'StringTree'.
  Property 'push' does not exist on type 'string'.
interfaceDoesNotDependOnBaseTypes.ts(4,5): error TS2454: Variable 'x' is used before being assigned.
interfaceDoesNotDependOnBaseTypes.ts(4,7): error TS2339: Property 'push' does not exist on type 'StringTree'.
  Property 'push' does not exist on type 'string'.


==== interfaceDoesNotDependOnBaseTypes.ts (5 errors) ====
    var x: StringTree;
    if (typeof x !== "string") {
               ~
!!! error TS2454: Variable 'x' is used before being assigned.
        x.push("");
        ~
!!! error TS2454: Variable 'x' is used before being assigned.
          ~~~~
!!! error TS2339: Property 'push' does not exist on type 'StringTree'.
!!! error TS2339:   Property 'push' does not exist on type 'string'.
        x.push([""]);
        ~
!!! error TS2454: Variable 'x' is used before being assigned.
          ~~~~
!!! error TS2339: Property 'push' does not exist on type 'StringTree'.
!!! error TS2339:   Property 'push' does not exist on type 'string'.
    }
    
    type StringTree = string | StringTreeArray;
    interface StringTreeArray extends Array<StringTree> { }