簡體   English   中英

jsdoc:如何使用括號表示法記錄屬性?

[英]jsdoc: how to document properties using bracket notation?

鑒於這個相當愚蠢的功能,應該如何為“范圍”參數編寫文檔?

/**
* @param {number} value
 * @param {Object} range
 * @param {number} range['<']
 * @param {number} range['<=']
 * @param {number} range['>']
 * @param {number} range['>=']
 */
function testIsInRange(value, range) {
    var threshold;

    if ((threshold = range['<'], threshold !== undefined) && !(value < threshold)) {
        fail('Value must be less than ' + threshold);
    }

    if ((threshold = range['<='], threshold !== undefined) && !(value <= threshold)) {
        fail('Value must be less than or equal to ' + threshold);
    }

    if ((threshold = range['>'], threshold !== undefined) && !(value > threshold)) {
        fail('Value must be greater than ' + threshold);
    }

    if ((threshold = range['>='], threshold !== undefined) && !(value >= threshold)) {
        fail('Value must be greater than or equal to ' + threshold);
    }
}

點和括號符號似乎都不起作用。 可以識別屬性類型(對象和編號),但不能識別它們的名稱。

類型可以指定為復雜對象:

/**
 * @param {number} value
 * @param {{'<': number, '<=': number, '>': number, '>=': number}} range
 */
function testIsInRange(value, range) {
    ...
}

或者,解構可以提供幫助,盡管它需要將參數重命名為非符號名稱:

/**
 * @param {number} value
 * @param {number} lt
 * @param {number} lte
 * @param {number} gt
 * @param {number} gte
 */
function testIsInRange(value, {'<':lt, '<=':lte, '>':gt, '>=':gte}) {
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM