title: Using Google Closure's @typedef tag
body: <p>Google's Closure compiler has an "@typedef" tag, but is it OK to use them in your code? (I know it'll work, but is it frowned upon?)</p>
  
  <p>So here's my type</p>
  
  <pre>
  /**
   * The plan object's typedef
   * @typedef {Object}
   */
  Types.Plan = {
      "style": "bordersmall",
      "width": "50%",
      "height": "40%",
      "x": "20%",
      "y": "10%",
      "clickable": true,
      "moveable": true
  };
  </pre>
  
  <p>And then I can use that type in my JSDoc annotations.</p>
  
  <p>This allows my IDE to give me autocomplete on the passed parameter</p>
  
  <p>So the declared object isn't used anywhere in the code.</p>
  
  <pre>
  /**
   * The Instructions class
   * @param   {Types.Plan}    plan        Plan for position and dimension
   * @param   {Manager}       manager     The manager
   * @param   {Instructions}  parent      This widget's parent's instructions
   * @return  {Instructions}              Returns the new instructions object
   */
  Instructions = function(plan, manager, parent){
      plan.
  }
  </pre>
  
  <p>So is this ok? Or is there a better solution?</p>