error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
typeGuardsObjectMethods.ts(12,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(16,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(16,22): error TS2454: Variable 'var2' is used before being assigned.
typeGuardsObjectMethods.ts(19,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(25,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(29,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(29,22): error TS2454: Variable 'var2' is used before being assigned.
typeGuardsObjectMethods.ts(35,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(39,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(39,22): error TS2454: Variable 'var2' is used before being assigned.
typeGuardsObjectMethods.ts(42,9): error TS2322: Type 'number | false' is not assignable to type 'number'.
  Type 'boolean' is not assignable to type 'number'.
typeGuardsObjectMethods.ts(46,1): error TS2322: Type 'string | number | false' is not assignable to type 'string | number'.
  Type 'boolean' is not assignable to type 'string | number'.
typeGuardsObjectMethods.ts(46,31): error TS2454: Variable 'strOrNum' is used before being assigned.
typeGuardsObjectMethods.ts(46,69): error TS2454: Variable 'strOrNum' is used before being assigned.
typeGuardsObjectMethods.ts(49,1): error TS2322: Type 'string | false' is not assignable to type 'string | number'.
  Type 'boolean' is not assignable to type 'string | number'.


!!! error TS5107: Option 'target=ES5' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
==== typeGuardsObjectMethods.ts (15 errors) ====
    // Note that type guards affect types of variables and parameters only and 
    // have no effect on members of objects such as properties. 
    
    // variables in global
    var num: number;
    var strOrNum: string | number;
    var var1: string | number;
    var obj1 = {
        // Inside method
        method(param: string | number) {
            // global vars in function declaration
            num = typeof var1 === "string" && var1.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
    
            // variables in function declaration
            var var2: string | number;
            num = typeof var2 === "string" && var2.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
                         ~~~~
!!! error TS2454: Variable 'var2' is used before being assigned.
    
            // parameters in function declaration
            num = typeof param === "string" && param.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
    
            return strOrNum;
        },
        get prop() {
            // global vars in function declaration
            num = typeof var1 === "string" && var1.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
    
            // variables in function declaration
            var var2: string | number;
            num = typeof var2 === "string" && var2.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
                         ~~~~
!!! error TS2454: Variable 'var2' is used before being assigned.
    
            return strOrNum;
        },
        set prop(param: string | number) {
            // global vars in function declaration
            num = typeof var1 === "string" && var1.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
    
            // variables in function declaration
            var var2: string | number;
            num = typeof var2 === "string" && var2.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
                         ~~~~
!!! error TS2454: Variable 'var2' is used before being assigned.
    
            // parameters in function declaration
            num = typeof param === "string" && param.length; // string
            ~~~
!!! error TS2322: Type 'number | false' is not assignable to type 'number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'number'.
        }
    };
    // return expression of the method
    strOrNum = typeof obj1.method(strOrNum) === "string" && obj1.method(strOrNum); 
    ~~~~~~~~
!!! error TS2322: Type 'string | number | false' is not assignable to type 'string | number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'string | number'.
                                  ~~~~~~~~
!!! error TS2454: Variable 'strOrNum' is used before being assigned.
                                                                        ~~~~~~~~
!!! error TS2454: Variable 'strOrNum' is used before being assigned.
    
    // accessing getter property
    strOrNum = typeof obj1.prop === "string" && obj1.prop; 
    ~~~~~~~~
!!! error TS2322: Type 'string | false' is not assignable to type 'string | number'.
!!! error TS2322:   Type 'boolean' is not assignable to type 'string | number'.