tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts(14,70): error TS2339: Property 'join' does not exist on type 'string | string[]'.
tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts(26,44): error TS2339: Property 'toLowerCase' does not exist on type 'number | string'.


==== tests/cases/conformance/expressions/typeGuards/typeGuardsOnClassProperty.ts (2 errors) ====
    // Note that type guards affect types of variables and parameters only and 
    // have no effect on members of objects such as properties. 
    
    // Note that the class's property must be copied to a local variable for
    // the type guard to have an effect
    class D {
        data: string | string[];
        getData() {
            var data = this.data;
            return typeof data === "string" ? data : data.join(" ");
        }
    
        getData1() {
            return typeof this.data === "string" ? this.data : this.data.join(" ");
                                                                         ~~~~
!!! error TS2339: Property 'join' does not exist on type 'string | string[]'.
        }
    }
    
    var o: {
        prop1: number|string;
        prop2: boolean|string;
    } = {
            prop1: "string" ,
            prop2: true
        }
    
    if (typeof o.prop1 === "string" && o.prop1.toLowerCase()) {}
                                               ~~~~~~~~~~~
!!! error TS2339: Property 'toLowerCase' does not exist on type 'number | string'.
    var prop1 = o.prop1;
    if (typeof prop1 === "string" && prop1.toLocaleLowerCase()) { }