2016-12-15 55 views
0

我正在寫入數組的擴展,並試圖將流式檢測與流式合併,但有一個錯誤,我似乎無法解決。解決流程類型錯誤

下面的函數Sum有一個可選的變量參數,如果變量未定義,則給它一個默認值。然後循環遍歷數組,如果元素是數字,則應用變換函數並將結果添加到sum中。

流程發出警告:「函數不能在可能的未定義值上調用」。我認爲變壓器被定義並且是一種功能的檢查應該可以緩解這種情況?什麼是最好的解決方案?

// @flow 

export function Sum(transformer : ?(a : number) => number) : number { 

    const transformerIsUndefined = typeof(transformer) === "undefined"; 

    if (!transformerIsUndefined && typeof(transformer) !== "function") { 
     throw "Transform argument must be a function"; 
    } 

    if (transformerIsUndefined) { 
     transformer = item => item; 
    } 

    let i : number = 0; 
    let sum : number = 0; 
    while (i < this.length) { 
     if (typeof(this[i]) === "number") { 
      sum += transformer(this[i]); 
     } else { 
      throw "Non-numerical element in the array."; 
     } 
     i++; 
    } 
    return sum; 
} 

回答

0

我解決了這個改變的參數要求,並在函數簽名提供默認:

export function Sum(transformer : (a : number) => number = item => item) : number { 
    ... 
} 

我仍然有興趣在其他發生在此。

相關問題