内の洗練を認識しませんリストはnull
にすることはできません。これを認識すること。フローこのコードは、フローチェックを渡すコールバック
私はどのような制限があり、どのように回避できるかを理解したいと思います。ありがとう!
内の洗練を認識しませんリストはnull
にすることはできません。これを認識すること。フローこのコードは、フローチェックを渡すコールバック
私はどのような制限があり、どのように回避できるかを理解したいと思います。ありがとう!
Flowでは、基本的に、() => list.length
が実行された時点で型の細分化(nullチェック)が保持されることはわかりません。そのコールバックフローの中では、リストの型だけが見えます。つまり、nullになる可能性があります。
最初のスニペットと2番目のスニペットの違いは、2番目のスニペットでlist
が関数境界を超えていることです。これは、そのタイプを洗練された場所とは異なる機能で使用しています。
解決策の1つは、list.lengthを変数に抽出し、その変数をコールバックで使用することです。
var length = list.length;
return Promise.resolve().then(() => length)
また、これはうまくいくかもしれない:
var list2: Array<string> = list;
return Promise.resolve().then(() => list2.length)
例えば、この問題もすぐに呼び出されたコールバックのために存在することに注意してください、 map
またはforEach
を使用する場合。これについての流れのgithubに問題がありますが、私は迅速な検索の後でそれを見つけることができませんでした。
ありがとうNikita!ここでの警告セクションでは、これについて詳しく説明しています。http://flowtype.org/docs/dynamic-type-tests.html#caveats – sorenbs