TypeScript内联匿名类型语法:Lodash map省略return的写法问询
解决Lodash Map方法的隐式返回写法问题
嘿,完全懂你的感受!用隐式返回的箭头函数确实能让代码更简洁,和groupBy的风格统一起来。你遇到的其实是箭头函数里对象字面量的语法小陷阱。
先看你原来的map写法:
.map((group, key) => { return { key: key, group: group } })
要改成隐式返回的话,不能直接去掉return和大括号——因为如果直接写(group, key) => { key: key, group: group },这里的{}会被JavaScript解析成函数体的花括号,而不是你想要返回的对象字面量,这会直接导致语法错误。
正确的隐式返回写法
只需要把要返回的对象用一对小括号包裹起来,告诉JS这是一个要返回的表达式,而不是函数体:
.map((group, key) => ({ key: key, group: group }))
进一步简化(ES6属性简写)
因为你的对象键名和变量名完全一致,还可以用ES6的属性简写语法,让代码更清爽:
.map((group, key) => ({ key, group }))
完整的代码示例
最终你的代码会变成这样:
var results = _(items) .groupBy((i) => i.key) .map((group, key) => ({ key, group })) .value();
简单总结下箭头函数隐式返回的规则:
- 当函数体是单个表达式时,可以省略
{}和return,直接返回表达式结果 - 如果返回的是对象字面量,必须用
()把对象包起来,避免和函数体的{}混淆
内容的提问来源于stack exchange,提问作者Bas Hamer
相关产品推荐
相关产品推荐

