我尝试将类型注释添加到现有代码中,并且我有一个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 = [];
// ...
但这也不起作用。我已经浏览并浏览了文档,但未能找到答案
A)这是否支持?
B)如果是的话,如何注释它。
答案 0 :(得分:1)
有人发布了一个有用且信息丰富的答案(我已经投了票),但它似乎已经失踪了 - 也许是因为我指出它并没有完全回答原来的问题,尽管提供了一个很好的解决方法。 / p>
无论如何,他们建议重写代码以将SuperArray定义为扩展Array并添加道具的类......
class SuperArray extends Array<number> {
superLevel: string
}
const foo = new SuperArray();
这是一个很好的,干净的出路,但我主要想知道是否可以注释原始模式 - 例如在一个人只限于编写独立声明来描述第三方模块的情况下。