【问题标题】:JSDOC: Override typedef object propertyJSDOC:覆盖 typedef 对象属性
【发布时间】:2018-11-30 17:34:35
【问题描述】:

我正在尝试在请求的 param 对象上记录查询字符串类型。我有一个 Request 类型的请求 @param 但我希望能够覆盖其继承的 param 对象,因为每个请求函数可能有一组不同的查询字符串。

/**
 * @typedef {Object} Request
 * @property {Object} params - Object that contains parameters passed to a route. (Query strings).
 * @property {string} hostname - Hostname from the HTTP-request.
 */

 class ProfileController extends Controller {
    /**
     * Fetch a profile
     * @param {Request} req - Request object
     * @param {string} req.params.id - Node ID <-- I WANT TO DO THIS, THIS DOESNT WORK
     * @param {Object} res - Response
     */
   get = (req, res) => {
    const { id, hostname } = req.params;
    // req.params.id doesn't get intellisense
   };
 }

【问题讨论】:

    标签: javascript jsdoc


    【解决方案1】:

    你可以这样做:

    /**
     * @typedef {Object} Request
     * @property {Object} params - Object that contains parameters passed to a route. (Query strings).
     * @property {string} hostname - Hostname from the HTTP-request.
     */
    
    /**
     * @typedef {Object} MyRequest
     * @property {Object} params - Object that contains parameters passed to a route. (Query strings).
     * @property {string} params.id - Node ID
     */
    
    class ProfileController extends Controller {
      /**
       * Fetch a profile
       * @param {Request & MyRequest} req - Request object
       * @param {Object} res - Response
       */
      get (req, res) {
        const { id, otherParam } = req.params;
      }
    }
    

    【讨论】:

    • 谢谢,但我在req.params.id 上没有智能感知,有没有可能以某种方式得到它?