由于对Symbol的Flow支持不佳,以下正确的代码会产生Flow错误(0.93版):
const iterator: Iterator<Item> = items[Symbol.iterator]();
string [1] is not an array index.
/private/tmp/flow/flowlib_30af1970/core.js
[1] 90│ static iterator: string; // polyfill '@@iterator'
我可以看到两种抑制它的方法,我都不满意。我应该使用其中一种(如果是,哪一种),还是有更好的方法?如果可能,请说明原因。
添加一个FixMe注释:
// $FlowFixMe
const iterator: Iterator<Item> = items[Symbol.iterator]();
或将数组类型转换为any
:
const iterator: Iterator<Item> = (items: any)[Symbol.iterator]();
两年前提交给How do I suppress flow symbol errors?的答案也没有其他选择。
(我正在寻找消除迭代器并使用简单循环的方法,但这很棘手,因此出于这个问题的目的,请忽略这种可能性)