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

问题描述:

我想将类型注释添加到现有的代码,我有一个数组实例,双倍作为一个对象设置自定义属性。像这样:是否可以使用自定义属性注释数组?

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)如果是这样,如何注释它。

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

总之,他们建议重写代码来定义SuperArray作为扩展阵列,并增加了道具类...

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

const foo = new SuperArray(); 

Explore on Flowtype.org/try

这是一个不错的,干净的出路,但我主要是想知道是否可以注释原始模式 - 就像在一个仅限于编写独立声明来描述第三方模块的情况下一样。

+1

答案来自我,我彻底删除了它,因为你的名字。我认为如果它不适合,那么我最好删除答案,以增加对Flow有更多见解的人发现问题的机会。 – Tomalak

+0

啊,我明白了。但是,记录替代方法也很有用。 –