number/sum.jsjavascript
/**
 * 计算有限数字数组的总和。
 * @function sum
 * @memberof module:number
 * @param {number[]} values 数字数组
 * @returns {number} 数字总和,空数组返回 0
 * @throws {TypeError} 参数不是有限数字数组时抛出
 */
function sum(values) {
  if (!Array.isArray(values) || values.some(value => !Number.isFinite(value))) throw new TypeError('values must be an array of finite numbers')
  return values.reduce((total, value) => total + value, 0)
}

export default sum