Javascript 注释中带有和Immutable.js数据结构的JSDoc

Javascript 注释中带有和Immutable.js数据结构的JSDoc,javascript,jsdoc,immutable.js,Javascript,Jsdoc,Immutable.js,我正在从函数返回Immutable.js数据结构 PHPStorm将自动附加以下内容 @返回{*| List | List} Eslint正在给我警告类型为“T”的未解析变量。 在哪里可以找到Immutable.js注释的文档 我如何在@returns中描述将在Eslint中传递的列表的注释形状 /** * @param n * @returns {*|List<T>|List<any>} */ const getList = (n) => { let l

我正在从函数返回Immutable.js数据结构

PHPStorm将自动附加以下内容
@返回{*| List | List}

Eslint正在给我警告类型为“T”的未解析变量。 在哪里可以找到Immutable.js注释的文档

我如何在@returns中描述将在Eslint中传递的列表的注释形状

/**
 * @param n
 * @returns {*|List<T>|List<any>}
 */
const getList = (n) => {
  let list = Immutable.List()

  for (let i = 0; i < n; i++) {
    for (let j = 0; j < n; j++) {
      list = list.push(Immutable.List.of(i, j))
    }
  }

  return list
}
/**
*@param n
*@returns{*| List | List}
*/
常量getList=(n)=>{
let list=Immutable.list()
for(设i=0;i
虽然我不熟悉Immutable.js,但问题是
T
是一个必须在文档中定义的模板。看,你的函数真正返回的是一个数字列表。因此,
T
解析为
List
,您的固定文档如下所示:

/**
 * @param {Number} n
 * @return {List<List<Number>>}
 */
此外,不仅时间,而且内存使用也在以二次方的方式增加。根据您使用它的方式,您可能希望将您的函数改为生成器函数,这将“神奇地”使它使用恒定的空间,即,无论
n
有多大,您的函数都将继续使用相同的内存量。以下是您的函数转换为生成器函数:

/**
 * @generator
 * @param {Number} n
 * @yields {List<Number>}
 */
function *getList(n) {
    for (let i = 0; i < n; i++) {
        for (let j = 0; j < n; j++) {
            yield Immutable.List.of(i, j);
        }
    }
}
/**
 * @generator
 * @param {Number} n
 * @yields {List<Number>}
 */
function *getList(n) {
    for (let i = 0; i < n; i++) {
        for (let j = 0; j < n; j++) {
            yield Immutable.List.of(i, j);
        }
    }
}
for (const pair of getList(4)) {
    console.info(`...and here comes another pair: [${pair}]`);
}