1. ホーム
  2. javascript

[解決済み] JSDocでプロミスのresolutionとrejectionの種類を指定するには?

2023-03-25 21:22:40

質問

プロミスオブジェクトを返すコードがあるのですが、例えば Q ライブラリを使っています。

var Q = require('q');

/**
 * @returns ???
 */
function task(err) {
    return err? Q.reject(new Error('Some error')) : Q.resolve('Some result');
}

JSDocを使ってこのような戻り値を文書化するにはどうしたらよいでしょうか?

どのように解決するのですか?

Javascriptに存在しなくても、JSdocが"generic types"を理解することがわかりました。

そのため、カスタムタイプを定義して、それを /* @return Promise<MyType> */ . 以下のようにすると、素敵な TokenConsume(token) → {Promise.<Token>} となります。 へのリンクと、あなたのカスタム Token へのリンクを付けます。

/**
 * @typedef Token
 * @property {bool} valid True if the token is valid.
 * @property {string} id The user id bound to the token.
 */

/**
 * Consume a token
 * @param  {string} token [description]
 * @return {Promise<Token>} A promise to the token.
 */
TokenConsume = function (string) {
  // bla bla
}

でさえ動作します。 /* @return Promise<MyType|Error> */ または /* @return Promise<MyType, Error> */ .