我有一个函数,可以接受单个数字或数字数组,并返回单个结果或结果数组。我无法让VScode将正确的类型返回到用于智能感知的存储变量中。
我已经尝试通过JSDoc使用一些文档模式,如下所示:
/**
* Some Description
*
* @constructor
* @param {number} nums
* @returns {number}
*//**
* Some other Description for array version!
*
* @constructor
* @param {number[]} nums
* @returns {number[]}
*/
我也尝试了以下方法,但无济于事:
/**
* Some Description
* @param {number|number[]} nums
* @returns {number|number[]}
*/
这种方法说变量可以是或,实际上并不能给出确定的结果。
/**
* Some Description
*
* @constructor
* @param {number} nums
* @returns {number}
*//**
* Some other Description for array version!
*
* @constructor
* @param {number[]} nums
* @returns {number[]}
*/
function addOne(nums) {
if (Array.isArray(nums))
return nums.map(n => n+1);
else
return nums + 1;
}
var a = addOne(1); // ::number -> Intellisense shows a is of type number CORRECT!
var b = addOne([ 1, 2 ]); // ::number -> Intellisense shows b as if it's of type number which is incorrect. It should be ::number[] which would be correct.
基本上,上面示例中的var a;
应该显示为::number
类型,而var b;
应该显示为::number[]
类型