I am currently using this:
/** @type {TagsLevel} */
export let list;
/** @type {string} */
export let tagListName;
/** @type {string | null} */
let srcTag = null;
/** @type {number | null} */
let srcTagNum = null;
/** @type {number | null} */
let srcLevelNum = null;
It's not very clear.
I wish I could use it that way:
/** @type {TagsLevel} */
/** @type {string} */
export let list;
export let tagListName;
/** @type {string | null} */
/** @type {number | null} */
/** @type {number | null} */
let srcTag = null;
let srcTagNum = null;
let srcLevelNum = null;
This should work identically to the previous code.
Is there a JSDoc syntax that enables something like this?
If not, I would like to know where to make the suggestion that support for such a case be introduced.
WHY THIS?
I am following the syntax of the function - @param. It's not identical, but it's very similar:
// Parameters may be declared in a variety of syntactic forms
/**
* @param {string} p1 - A string param.
* @param {string=} p2 - An optional param (Google Closure syntax)
* @param {string} [p3] - Another optional param (JSDoc syntax).
* @param {string} [p4="test"] - An optional param with a default value
* @returns {string} This is the result
*/
function stringsStringStrings(p1, p2, p3, p4) {
// TODO
}
The alternative - this:
/** @type {TagsLevel} */ export let list;
/** @type {string} */ export let tagListName;
/** @type {string | null} */ let srcTag = null;
/** @type {number | null} */ let srcTagNum = null;
/** @type {number | null} */ let srcLevelNum = null;
But it's not very clear either, and it makes the line very long.