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

新手上路,请多包涵

我收到一个 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 许可协议

阅读 297
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 许可协议

推荐问题