从打字稿接口对象中删除字段

新手上路,请多包涵

我收到一个 json 响应并将其存储在 mongodb 中,但是我不需要的字段也进入了数据库,是否有办法去除不安全的字段?

 interface Test{
    name:string
};
const temp :Test = JSON.parse('{ "name":"someName","age":20 }') as Test;
console.log(temp);

输出 :

 { name: 'someName', age: 20 }

原文由 Bekzod 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 292
2 个回答

您可以使用从给定对象中选取某些属性的函数:

 function pick<T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> {
    const copy = {} as Pick<T, K>;

    keys.forEach(key => copy[key] = obj[key]);

    return copy;
}

然后:

 let obj = { "name": "someName", "age": 20 };
let copy = pick(obj, "name") as Test;
console.log(copy); // { name: "someName" }

原文由 Nitzan Tomer 发布,翻译遵循 CC BY-SA 3.0 许可协议

假设你有这个对象。

 const x = {a: 1, b: 2, c: 3};

如果你只想用 ab 制作一个对象,你可以使用下面的方法。

 const {c, ...y} = x;
console.log(y);

您将看到 y 现在只有 ab

如果字段 c 不在 x 中,这也不会给出错误。举个例子,

 const x: any = {a: 1, b: 2, c: 3};
const {d, ...y} = x;
console.log(y);

这工作得很好,没有任何错误,如果您记录 d 的值,它将是未定义的。

原文由 Ramesh-X 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题