ES6可迭代对象的JSDoc类型名称

4

我有一个JavaScript方法,它接受可迭代对象,即遵循ES6可迭代协议的任何对象。我想在JSDoc中注释此内容。我该如何引用“iterable”类型?

/**
 * @param {__WHAT_GOES_HERE__?} iterable
 */
function consume(iterable) { ... }

我可以在JSDoc中写出整个协议,但那会变得有点...非常难以处理:

 * @param {
 *   {
 *     Symbol.iterator: function(): {
 *       next: function() : {
 *         value: T|undefined,
 *         done: boolean
 *       }
 *     }
 *   }
 * } iterable

此外,工具似乎不理解Symbol.iterator的含义。


1
通常我只是放置 Iterable.<number> 或者其他类型,但我们实际上并不从 JSDocs 生成文档。 - loganfsmyth
@loganfsmyth 我使用WebStorm,它会根据注释提供一些基本的类型警告。当我故意误报类型时,它会抱怨。 - Craig Gidney
@Strilanc:你使用的是什么类型系统?你能在那里声明接口吗? - Bergi
1
@Bergi 这个问题涉及到JSDoc,但是我具体的情况是"WebStorm内置的任何东西"。可能是一些特定组合的现有标准,包括JSDoc和Closure的类型注释。 - Craig Gidney
1个回答

1
我的当前解决方案是定义具有适当方法的IterableIterator类。我将这些类放在编辑器可见但实际未使用的位置,因此linter可以看到定义,但它们不会作为膨胀包含在实际输出中。
然后,在接受/返回序列的方法的JSDoc中,我可以引用Iterable<T>Iterator<T>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接