2017-08-13 8 views
1

私は自分のオブジェクトの1つにフロー定義の型定義を作成しようとしています。フローサポート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 
+0

あなたが/しようとしませんでした/ $ FlowFixMe行の前に、私はあなたの設定でそれを見ています – eenagy

+0

あなたの質問のタイトルを編集してください、する必要があります:どのように私はフローシンボルエラーを抑制するのですか? – eenagy

+0

// $ FlowFixMeは有効な回答でなければなりません。 :) わたしにはできる。私は提案のためにタイトルのおかげで更新します。 –

答えて

1

私は型エラーがそれ自体はSymbolとは何かを持っているとは思いません。どのFlowが、nameversionというキーでVersionタイプを宣言したことを伝えていますが、タイプに含まれていないオブジェクトでSymbolを検索しています。 version["randomString"]を実行した場合も同様のエラーが発生します。これは、そのプロパティがタイプVersionの一部であると宣言されていないためです。

もう1つコメントしたように、$FlowFixMeでエラーを無視できます。しかし、このコード自体は安全ではないかもしれません。なぜなら、あなたはこのオブジェクトに定義されている余分なシンボルに頼っていますが、Flowがそれを証明できないからです。これらの動的ルックアップをしなくてもよいように、Version型をモデル化することができます。

は(編集:私は、あまりにもすぐに話したように、ああ、[OK]を、見えフローは、コンピュータ記号キーを使用して好きではない、それは理論的にはそれらをチェックすることができていても、この問題を参照してください。。https://github.com/facebook/flow/issues/2928

+0

ええ、私はSymbolsのサポートが不足していることを認識していましたが、その間に '// $ FlowFixMe'が問題を解決しています。私はFacebookがすぐに解決することを願っています。 –

関連する問題