是否可以使用自定义属性注释数组?

时间:2016-12-16 13:33:34

标签: javascript flowtype

我尝试将类型注释添加到现有代码中,并且我有一个Array实例,该实例兼作对象,并在其上设置了自定义属性。像所以:

const foo = [];
foo[0] = 13;
foo.push(42);

foo.superLevel = 'extreme'; // Flow complains about this

我以为我可能会声明一个名为SuperArray的新类型,类似于:

type SuperArray = Array<number> & {
  superLevel: string,
}
const foo: SuperArray = [];
// ...

View on flowtype.org/try

但这也不起作用。我已经浏览并浏览了文档,但未能找到答案

A)这是否支持?
B)如果是的话,如何注释它。

1 个答案:

答案 0 :(得分:1)

有人发布了一个有用且信息丰富的答案(我已经投了票),但它似乎已经失踪了 - 也许是因为我指出它并没有完全回答原来的问题,尽管提供了一个很好的解决方法。 / p>

无论如何,他们建议重写代码以将SuperArray定义为扩展Array并添加道具的类......

class SuperArray extends Array<number> {
  superLevel: string
}

const foo = new SuperArray();

Explore on Flowtype.org/try

这是一个很好的,干净的出路,但我主要想知道是否可以注释原始模式 - 例如在一个人只限于编写独立声明来描述第三方模块的情况下。