@use JSDoc

構文

@alias <エイリアスパス名>

概要

@alias タグにより、JSDoc はすべてのメンバー参照において、メンバーが異なる名前であるかのように見なされます。このタグは、特に内部関数内でクラスを定義する場合に便利です。この場合、@alias タグを使って、アプリ内でどのようにクラスが公開されているかを JSDoc に伝えることができます。

@alias タグは @name タグに似ていますが、これらのタグの動作は大きく異なります。@name タグでは、JSDoc にコメントに関連するコードを無視するように命令します。たとえば、JSDoc が次のコードを処理する際、コメントが関数に添付されているという事実は無視されます。

/**
 * Bar function.
 * @name bar
 */
function foo() {}

@alias タグでは、JSDoc に、メンバー A が実際にはメンバー B であるかのように見なすように命令します。たとえば、JSDoc が次のコードを処理する際、foo が関数であることを認識し、ドキュメント中では foobar にリネームされます。

/**
 * Bar function.
 * @alias bar
 */
function foo() {}

クラスの定義時にコンストラクタ関数を渡すように想定されたクラスフレームワークを使用しているとします。@alias タグを使用して、クラスがアプリ内でどのように公開されるかを JSDoc に伝えることができます。

次の例では、@alias タグにより、JSDoc に匿名関数がクラス "trackr.CookieManager" のコンストラクタであるかのように見なすように命令します。関数内では、JSDoc は this キーワードを trackr.CookieManager に関連付けして解釈するため、"value" メソッドには "trackr.CookieManager#value" というネームパスが付けられます。

匿名コンストラクタ関数で @alias を使う
Klass('trackr.CookieManager',

    /**
     * @class
     * @alias trackr.CookieManager
     * @param {Object} kv
     */
    function(kv) {
        /** The value. */
        this.value = kv;
    }

);

すぐに呼び出される関数式 (IIFE) 内に作成されるメンバーと一緒に @alias タグを使用することもできます。@alias タグにより、JSDoc にこれらのメンバーが IIFE のスコープ外で公開されていることが伝えられます。

名前空間の静的メンバーに @alias を使う
/** @namespace */
var Apple = {};

(function(ns) {
    /**
     * @namespace
     * @alias Apple.Core
     */
    var core = {};

    /** Documented as Apple.Core.seed */
    core.seed = function() {};

    ns.Core = core;
})(Apple);

オブジェクトリテラル内に定義されたメンバーの場合は、@alias タグを @lends タグの代わりに使うことができます。

オブジェクトリテラルに @alias を使う
// Documenting objectA with @alias

var objectA = (function() {

    /**
     * Documented as objectA
     * @alias objectA
     * @namespace
     */
    var x = {
        /**
         * Documented as objectA.myProperty
         * @member
         */
        myProperty: 'foo'
    };

    return x;
})();

// Documenting objectB with @lends

/**
 * Documented as objectB
 * @namespace
 */
var objectB = (function() {

    /** @lends objectB */
    var x = {
        /**
         * Documented as objectB.myProperty
         * @member
         */
        myProperty: 'bar'
    };

    return x;
})();