メソッド・関数へのコメント
/** * 関数の説明 * @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 この関数が期待するイベント */