2017-08-31 33 views
1

我是新來的流量,我想知道爲什麼一對夫婦的「基本」問題不流提出任何警告:流量類型檢查問題

let foo: Array<{| id: string, occursOn: string |}>; 
    foo = [{ id: "5", occursOn: "2017-01-01" }]; 

    // Not a flow error! 
    console.log(foo[0][0].bar); 

    const grouped = groupBy(foo, "occursOn"); 

    // Not a flow error! 
    console.log(grouped["2017-01-01"].bar); 

爲什麼訪問foo[0][0].bar確定在流動的時候我一直明確說明foo的類型?

同樣,我有lodash通過flow-typed安裝,但grouped["2017-01-01"].bar似乎完全罰款在流?

回答

1

您與數組索引第一個例子,似乎這樣的錯誤:https://github.com/facebook/flow/issues/4257

groupBy,最有可能你只是還沒告訴流什麼groupBy一樣。我假設你正在做的

import { groupBy } from 'lodash'; 

,默認情況下流動型沒有任何辦法知道什麼lodash模塊或什麼它的功能做的,所以you need to install type definitions for Lodash,希望你沒有使用過很多運行時間的魔力,所以它會給你一個合理的類型簽名。

對於你的情況,當Flow知道它是什麼類型時,你會得到錯誤,which you can see here

+0

非常感謝。 對於你的問題的'groupBy'部分,正如我原來的文章中提到的,我已經通過'flow-typed'安裝了lodash的定義。事實證明,因爲我是通過從「lodash/groupBy」引入groupBy來挑選我的模塊(以避免將整個lodash庫加載到我的包中),所以'flow-typed'沒有正確拾取此模塊。從'lodash'工作切換到'import {groupBy}。 – Max

+0

對不起,我錯過了那部分評論。這就說得通了。如果你仍然想避免在使用類型時拉動整個bundle,你可以使用類似https://github.com/lodash/babel-plugin-lodash的東西。 – loganfsmyth