enumDef.js(14,20): error TS1003: Identifier expected.
enumDef.js(14,21): error TS1003: Identifier expected.
index.js(4,17): error TS2749: 'Host.UserMetrics.Action' refers to a value, but is being used as a type here. Did you mean 'typeof Host.UserMetrics.Action'?
index.js(18,11): error TS2749: 'Host.UserMetrics.Blah' refers to a value, but is being used as a type here. Did you mean 'typeof Host.UserMetrics.Blah'?


==== enumDef.js (2 errors) ====
    var Host = {};
    Host.UserMetrics = {};
    /** @enum {number} */
    Host.UserMetrics.Action = {
        WindowDocked: 1,
        WindowUndocked: 2,
        ScriptsBreakpointSet: 3,
        TimelineStarted: 4,
    };
    /**
     * @typedef {string} Host.UserMetrics.Bargh
     */
    /**
     * @typedef {string}
                       ~
!!! error TS1003: Identifier expected.
                        
     */
    
!!! error TS1003: Identifier expected.
    Host.UserMetrics.Blah = {
        x: 12
    }
==== index.js (2 errors) ====
    var Other = {};
    Other.Cls = class {
        /**
         * @param {!Host.UserMetrics.Action} p
                    ~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2749: 'Host.UserMetrics.Action' refers to a value, but is being used as a type here. Did you mean 'typeof Host.UserMetrics.Action'?
         */
        method(p) {}
        usage() {
            this.method(Host.UserMetrics.Action.WindowDocked);
        }
    }
    
    /**
     * @type {Host.UserMetrics.Bargh}
     */
    var x = "ok";
    
    /**
     * @type {Host.UserMetrics.Blah}
              ~~~~~~~~~~~~~~~~~~~~~
!!! error TS2749: 'Host.UserMetrics.Blah' refers to a value, but is being used as a type here. Did you mean 'typeof Host.UserMetrics.Blah'?
     */
    var y = "ok";
    