如何抑制流动符号错误?(How do I suppress flow symbol errors?)

2019-09-30 16:59发布

我试图创造流量类型定义为我的对象之一。 我不知道是否流支持Symbols ,但在这种情况下,我怎么能跳过这个警告呢?

 const version: Version = this.getVersion(12345);
 const upLink: string = version[Symbol.for('__my_amazing_symbol')];

但在验证上面的线,我对运行下面的错误flow check

Error: src/local.js:197
197:               const upLink: string = version[Symbol.for('__my_amazing_symbol')];
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ access of computed property/element. Computed property cannot be accessed with
197:               const upLink: string = version[Symbol.for('__my_amazing_symbol')];
                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Symbol


Found 2 errors

这是我喜欢的类型,例如对象。

declare export type Version = {
        name: string;
        version: string;
    };

流程配置

[ignore]
.*/node_modules/.*
lib/.*

[include]

[libs]
node_modules/@mod/types/lib/

[lints]

[options]
suppress_comment= \\(.\\|\n\\)*\\$FlowFixMe
unsafe.enable_getters_and_setters=true

[version]
^0.52.0

Answer 1:

我不认为错误类型有什么用Symbol每本身。 什么流量是告诉你的是,你声明的Version连键式nameversion ,但现在你该对象,这是不是类型的一部分对查找的象征。 你会得到一个类似的错误,如果你做了version["randomString"]因为属性未声明为类型的部分Version

作为另一评论提到,你可以忽略与错误$FlowFixMe 。 但这个代码本身可能是不安全的,因为你依靠额外的符号此对象上被定义,但不是让流动证明这一点。 你可以尝试你的模型Version类型以避免不必做这些动态查询方式。

(编辑:嗯,好吧,貌似我说话太快流量不喜欢使用电脑符号键,即使它在理论上可以检查他们看到这个问题:。 https://github.com/facebook/flow/issues / 2928 )



文章来源: How do I suppress flow symbol errors?