是否可以使用自定义属性注释数组?
问题描述:
我想将类型注释添加到现有的代码,我有一个数组实例,双倍作为一个对象设置自定义属性。像这样:是否可以使用自定义属性注释数组?
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 = [];
// ...
但是,这并不工作。我已浏览并浏览了文档,但未能找到答案。
A)是否支持此操作? B)如果是这样,如何注释它。
答
有人发布了一个有用的和内容丰富的答案(我投了票),但它似乎失踪了 - 也许是因为我指出它并没有完全回答原来的问题,尽管提供了一个很好的解决方法。
总之,他们建议重写代码来定义SuperArray作为扩展阵列,并增加了道具类...
class SuperArray extends Array<number> {
superLevel: string
}
const foo = new SuperArray();
这是一个不错的,干净的出路,但我主要是想知道是否可以注释原始模式 - 就像在一个仅限于编写独立声明来描述第三方模块的情况下一样。
答案来自我,我彻底删除了它,因为你的名字。我认为如果它不适合,那么我最好删除答案,以增加对Flow有更多见解的人发现问题的机会。 – Tomalak
啊,我明白了。但是,记录替代方法也很有用。 –