JSDoc - 记录混合数组

Kev*_*Law 5 javascript arrays documentation jsdoc

在 JSDoc 中,如何记录一个接受多个对象类的数组,如下所示:

var arr = [new Foo(), new Bar()];
Run Code Online (Sandbox Code Playgroud)

如何编写类型使得Foo并且Bar是数组中唯一接受的类?

Luc*_*iva 7

如果第一个对象的类型应该总是Foo,第二个总是Bar,我们正在研究什么会被理解为元组对象。在这种情况下,正确的 JSDoc 类型是:

/** @type {[Foo, Bar]} */
const arr = [new Foo(), new Bar()];
Run Code Online (Sandbox Code Playgroud)

并且不像Array<Foo|Bar>人们想象的那样,因为后者允许诸如 之类的事情[new Foo(), new Foo()],这可能是不受欢迎的。

  • 在 `jsdoc` 3.6.3(我假设所有早期版本)中,此语法是非法的并引发错误 (3认同)