【问题标题】:JSDoc type name for ES6 iterablesES6 可迭代的 JSDoc 类型名称
【发布时间】:2015-12-24 08:06:43
【问题描述】:

我有一个 javascript 方法,它接受一个可迭代的,即 the es6 iterable protocol 之后的任何对象。我想在其 JSDoc 中对此进行注释。如何引用“可迭代”类型?

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

我可以在 JSDoc 中写出整个协议,但这有点……难以置信的笨拙:

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

另外,工具似乎无法理解 Symbol.iterator 的含义。

【问题讨论】:

  • 我通常只输入Iterable.<number> 或任何类型,但我们实际上并没有从 JSDocs 生成文档。
  • @loganfsmyth 我使用 webstorm,它会根据注释进行一些基本的类型警告。当我只是对类型撒谎时,它会抱怨。
  • @Strilanc:你使用的是什么类型的系统?你可以在那里声明接口吗?
  • @Bergi 这个问题是指 JSDoc,但我的具体情况是“WebStorm 内置的任何东西”。可能是现有标准的一些临时组合,包括 JSDoc 和 Closure 的类型注释。

标签: javascript annotations ecmascript-6 jsdoc iterable


【解决方案1】:

我当前的解决方案是使用适当的方法定义IterableIterator 类。我将类放在编辑器可见但未实际使用的位置,因此 linter 可以看到定义,但它们不会作为膨胀包含在实际输出中。

那么,在接受/返回序列的方法的JSDoc中,我可以参考Iterable<T>Iterator<T>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多