- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.2k
 
Annotating Types
        John Lenz edited this page Sep 9, 2016 
        ·
        12 revisions
      
    The compiler recognizes @type and function declarations (@param, @return, etc) annotations in two contexts: declarations and casts.
Variable and functions can be declared with either traditional declarations, or inline declarations, which are more concise.
For more information about specific types that can be used in @type annotations see: Types in the Closure Type System
/** @type {function(number):string} */
function f(x) {return x + ' apples'}or the more concise inline function declaration:
function /** string */ f(/** number */ x) {return x + ' apples'}/** @type {string} */
var x = 'fruit';or the more concise inline var declaration:
var /** string */ x = 'fruit';/** @type {string} */
x.prop = 'fruit';or
var x = {
  /** @type {string} */
  prop : 'fruit'
};try { 
  ... 
} catch (/** @type {string} */ e) {
  ...
}Type cast precede a parenthesized expression.
var x = /** @type {string} */ (fruit);