解决流程类型错误

解决流程类型错误

问题描述:

我正在写入数组的扩展,并试图将流式检测与流式合并,但有一个错误,我似乎无法解决。解决流程类型错误

下面的函数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; 
} 

我解决了这个改变的参数要求,并在函数签名提供默认:

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

我仍然有兴趣在其他发生在此。