使用布尔注释装饰JS对象

时间:2017-11-13 23:49:13

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

这只是一点乐趣。说我们有这个:

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;
}

或类似的东西。

1 个答案:

答案 0 :(得分:3)

我只会编写一个通用函数并在其中使用它,例如

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())
})