【问题标题】:Decorate JS object with boolean annotation用布尔注解装饰 JS 对象
【发布时间】:2017-11-14 09:40:14
【问题描述】:

这里只是有点乐趣。假设我们有这个:

return {
  c: p.then(v => new Client(conf).ensure())
}

我需要为其添加一个布尔值,如下所示:

return {
  inject: true
  c: p.then(v => new Client(conf).ensure())
}

在 ESNext 或 中是否有某种方式来装饰返回的对象,像这样?

@inject
return {
  c: p.then(v => new Client(conf).ensure())
}

它是如何工作的?像这样:

let addInjectProp = function(target){
   target['inject'] = true;
   return target;
}

或类似的东西。

【问题讨论】:

  • 在这个例子中用布尔注释装饰它实际上做了什么?您打算如何访问此值?
  • 在这种简单的情况下,它只是将布尔值添加到返回的对象中,所以就像我在更新的问题中显示的那样
  • 我把问题说得更清楚了(我希望)

标签: typescript javascript node.js typescript babeljs typescript2.0


【解决方案1】:

我只会编写一个通用函数并在适当的位置使用它,例如

function inject<T>(t: T): T & { inject: true } {
  return Object.assign({}, t, { inject: true as true });
}

使用:

return inject({
  c: p.then(v => new Client(conf).ensure())
})

【讨论】:

  • 是的,但没那么花哨! :) 这是一个库,所以我所有的用户都必须编写那个辅助函数,但是是的,我只是想知道 :)
猜你喜欢
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 2010-12-28
相关资源
最近更新 更多