在JSDoc中,如何记录接受多个对象类的数组,像这样:
var arr = [new Foo(), new Bar()];
如何编写类型,使得Foo
和Bar
是数组中唯一被接受的类?
var arr = [new Foo(), new Bar()];
如何编写类型,使得Foo
和Bar
是数组中唯一被接受的类?
Foo
,第二个对象始终应该是Bar
,那么我们正在看作为元组对象所理解的内容。在这种情况下,正确的JSDoc类型应为:
{[0]: Foo, [1]: Bar}
/** @type {[Foo, Bar]} */
const arr = [new Foo(), new Bar()];
与人们可能认为的不同,它不是 Array<Foo|Bar>
,因为后者允许像 [new Foo(), new Foo()]
这样的东西,这可能是不想要的。
jsdoc
3.6.3(以及我假设的所有早期版本)中,这个语法是不合法的并会抛出错误。 - Captain_Obvious[Foo, Bar]
被用于元组。即第一个元素为Foo
,第二个元素为Bar
的元组。
一个可以有多个Foo
和Bar
的一般数组将是(Foo|Bar)[]
,正如@austin_ce所建议的那样。 - dannymojsdoc
CLI 不能。 - abulka
/** @type {[Foo|Bar]} */
- Kevin Law{Array.<Foo|Bar>}
。 - Pandawan{(Foo|Bar)[]}
。 - austin_ce[Foo|Bar]
的意思是一个包含一个元素的元组,该元素可以是Foo
或Bar
。 - dannymo