メソッド・関数へのコメント
/**
* 関数の説明
* @param {number|string} hoge パラメータの説明
* @param {string} [fuga] 任意の場合は [] がつく。
* @param {string} [fuga2='fuga'] 任意かつ未指定の場合の初期値が決まっている
* @return {boolean} 〇〇か否か
*/
データ型の書き方いろいろ
/**
* @param {string|number} 文字列もしくは数値
* @param {string[]} hoge_ary その型の配列の場合
* @param {Object} user_info ユーザ情報
* @param {Object} user_info.name ユーザ名
* @param {Object} user_info.email ユーザのアドレス
* @param {Array.<MyClass>} MyClassインスタンスの配列
* @param {Object.<string, number>} 文字列キーと数値を持つオブジェクト
* @param {Object} myObj プロパティ 'a'(数値)、 'b'(文字列)、 'c'(任意の型)を持つ 'myObj'というオブジェクト。
* @param {number} myObj.a
* @param {string} myObj.b
* @param {} myObj.c
* @param {【名前空間】#【メンバ】} 名前空間のインスタンス メンバ
* @param {【名前空間】.【メンバ】} 名前空間のスタティック メンバ
* @param {【名前空間】~【メンバ】} 名前空間の内部 メンバ
*/
静的プロパティリスト
/**
* @namespace
* @property {object} user_info
* @property {number} user_info.id
* @property {string} user.info.name
* @property {object} user.info.skills
* @property {number} user.info.skills.html
* @property {number} user.info.skills.css
*/
var setting= {
user_info: {
id: 1,
name: '名前',
skills: {
html: 0,
css: 1
}
}
};
コールバック
/**
* メソッド
* @param {CallbackName} callback コールバック関数
*/
var doSomething = function(callback){
};
/**
* コールバック関数の説明
* @callback CallbackName
* @param {number} hoge 説明
* @param {string} fuga 説明
*/
イベント
使いこなせる気がしないな…
/**
* Throw a snowball.
* イベントをキックする関数
* @fires Hurl#snowball キックされるイベント名
*/
Hurl.prototype.snowball = function() {
/**
* Snowball event.
*
* @event Hurl#snowball 発火するイベント
* @type {object} イベントに渡される情報
* @property {boolean} isPacked - Indicates whether the snowball is tightly packed.
*/
this.emit('snowball', {
isPacked: this._snowball.isPacked
});
};
独自の型定義
/**
* @typedef PropertiesHash
* @type {object}
* @property {string} id - an ID.
* @property {string} name - your name.
* @property {number} age - your age.
*/
/** @type {PropertiesHash} */
var props;
他に使いそうな書き方
/** * @see 依存する関数やクラス * @listens この関数が期待するイベント */