gpt4 book ai didi

javascript - Typescript 使用 "as"从对象中删除其他属性?

转载 作者:行者123 更新时间:2023-11-28 17:22:14 25 4
gpt4 key购买 nike

我想通过 JSON 发送一个对象,它实现了一个接口(interface),但也有一些我不想发送的其他属性。如何“删除”其他所有内容,以便拥有一个仅具有接口(interface)属性的纯对象?

示例:

interface IBlock{
x:number;
y:number;
}

class Block implements IBlock{
public z:number;
}
...
send(JSON.stringify(new Block() as IBlock));

responseIWant = "{x:0,y:0}";
responseIGet = "{x:0,y:0,z:0}";

最佳答案

接口(interface)和使用as的转换都是编译时构造,当代码实际执行时,它们在运行时不执行任何操作。

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

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

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

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

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

关于javascript - Typescript 使用 "as"从对象中删除其他属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com