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



我正在尝试将类型注释添加到现有代码中,并且我有一个数组实例,它可以将其作为对象兼容,并在其上设置了自定义属性。喜欢:

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 = [];
// ...

(在flowtype.org/try上查看)

,但这也不起作用。我一直在浏览文档并浏览文档,但没有找到对

的答案

a)这一点是否受到支持?
b)如果是这样,如何注释它。

有人发布了一个有用且有益的答案(我已投票),但似乎已经失踪了 - 也许是因为我指出,尽管它并没有完全回答原始问题,尽管提供一个不错的方法。

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

class SuperArray extends Array<number> {
  superLevel: string
}
const foo = new SuperArray();

(在flowtype.org/try上进行探索)

这是一种很好,干净的出路,但是我主要有兴趣找出注释原始模式是否可能 - 就像在一个情况下仅限于撰写独立声明以描述第三方模块的情况。

最新更新