There has been a couple of attempt to use @typedefs in unique ways recently and we need to decide if we want to encourage or discourage these practices:
case 0: standard practice
/** @typedef {string} */ var X;
case 1: type alias
/** @typedef {Foo} */ var Bar = Foo;
case 2: namespace with a type
/** @typedef {string} */ var Bar = {};
Bar.X = 1;
case 3: random value
/** @typedef {string} */ var Bar = true;
/** @typedef {Foo} */ var Bar = new Foo()
0 obviously we support, 1 seems natural enough and I'm working on fixing collapse properties so this actually works.
Case 2, has some use and works today but I'm concerned that we might be incurring engineering debt if we allow it.
Case 3, seems most likely typos and we should ban them