bitwiseNotOperatorWithStringType.ts(8,12): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor.
bitwiseNotOperatorWithStringType.ts(18,24): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(32,26): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(32,35): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(33,25): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(36,26): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(37,28): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(37,37): error TS2454: Variable 'STRING' is used before being assigned.
bitwiseNotOperatorWithStringType.ts(40,2): error TS2454: Variable 'STRING' is used before being assigned.


==== bitwiseNotOperatorWithStringType.ts (9 errors) ====
    // ~ operator on string type
    var STRING: string;
    var STRING1: string[] = ["", "abc"];
    
    function foo(): string { return "abc"; }
    
    class A {
        public a: string;
               ~
!!! error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor.
        static foo() { return ""; }
    }
    namespace M {
        export var n: string;
    }
    
    var objA = new A();
    
    // string type var
    var ResultIsNumber1 = ~STRING;
                           ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    var ResultIsNumber2 = ~STRING1;
    
    // string type literal
    var ResultIsNumber3 = ~"";
    var ResultIsNumber4 = ~{ x: "", y: "" };
    var ResultIsNumber5 = ~{ x: "", y: (s: string) => { return s; } };
    
    // string type expressions
    var ResultIsNumber6 = ~objA.a;
    var ResultIsNumber7 = ~M.n;
    var ResultIsNumber8 = ~STRING1[0];
    var ResultIsNumber9 = ~foo();
    var ResultIsNumber10 = ~A.foo();
    var ResultIsNumber11 = ~(STRING + STRING);
                             ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
                                      ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    var ResultIsNumber12 = ~STRING.charAt(0);
                            ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    
    // multiple ~ operators
    var ResultIsNumber13 = ~~STRING;
                             ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    var ResultIsNumber14 = ~~~(STRING + STRING);
                               ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
                                        ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    
    //miss assignment operators
    ~STRING;
     ~~~~~~
!!! error TS2454: Variable 'STRING' is used before being assigned.
    ~STRING1;
    ~foo();
    ~objA.a,M.n;