在使用函数式编程中,发现在处理业务逻辑时使用curry、compose等方法使得开发体验有明显的提升
例如在一个购物车列表中我需要将用户加入的购物车的商品进行计总
// 购物车商品列表
const goodsList = [{
selected: false, // 该商品是否被选中
money: 300.14, // 商品价格
number: 0 // 商品数量
},{
selected: false, // 该商品是否被选中
money: 300.15, // 商品价格
number: 0 // 商品数量
}, ...]
// 要求计算金额总价,我们需要考虑:
// 单个商品的总价(单价 * 数量) caleGoodsTotal: (data: goodsList: number[]
// 所有商品价格 caleAllGoodsTotal: (data: number[]): number
// 对金额进行保留2位 formatMoney: (n: number): string
// compose:
let composeResult = compose(
formatMoney,
caleAllGoodsTotal,
caleGoodsTotal)
composeResult(goodsList) // '600.29'
// functor:
let functorResult = Funtor.of(goodsList)
.map(caleGoodsTotal)
.map(caleAllGoodsTotal)
.map(formatMoney) // Functor {value: '600.29'}