You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已声明函数,能否创建对象时简化同名字段赋值避免重复书写?

解决方案

你想要的效果可以通过计算属性名结合函数的name属性来实现,这样就能避免重复书写函数名:

const myFunction = (myService: Service) => myService.doThings()

const myObject = (myService: Service) => ({
  [myFunction.name]: myFunction(myService)
})

这里myFunction.name会自动获取函数的名称(也就是"myFunction")作为对象的属性名,属性值则是函数调用后的结果,完全满足你的需求。

为什么你的写法不生效?

你尝试的myFunction(myService)写法会被JavaScript/TypeScript解析为对象方法的定义语法,但这种语法要求提供方法的实现(比如myFunction() {}或箭头函数形式),而非直接写函数调用,因此会触发语法错误。

额外补充

如果你的函数是匿名函数(比如const myFunction = function() {}或箭头函数被重新赋值),myFunction.name可能不符合预期,这种情况下可以提前定义属性名变量:

const funcName = 'myFunction'
const myFunction = (myService: Service) => myService.doThings()

const myObject = (myService: Service) => ({
  [funcName]: myFunction(myService)
})

内容的提问来源于stack exchange,提问作者Gigabit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:32:12