打字稿删除对象与“作为”的其他属性?

时间:2018-09-08 17:16:39

标签: javascript typescript

我想通过JSON发送一个对象,该对象实现了一个接口,但是还具有一些其他我不想发送的属性。我如何才能“删除”其他所有内容,因此我只有接口属性的纯对象?

示例:

config

1 个答案:

答案 0 :(得分:3)

interfaces和使用as的强制转换都是编译时构造,在实际执行代码时,它们在运行时不执行任何操作。

您可以使用pick中的lodash方法:

const subset = _.pick(obj, ['x', 'y'])

或者,如果您不想引入库,则可以通过解构来实现:

const subset = (({ x, y }) => ({ x, y }))(obj);

另一种更高级的技术是将实际的类与reflect-metadata和装饰器一起使用,以便能够在运行时对代码的内容做出更好的决策。