gpt4 book ai didi

Typescript - 如何将对象转换为界面

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:52 24 4
gpt4 key购买 nike

假设有一个接口(interface)

interface A {
a: number;
}

目前我有一个原始对象

const a = { a: 1, b: '2' };

我希望有一种方法可以让 x 成为 { a: 1 },它只包含在接口(interface)中定义的成员。

这可以通过创建一个空的 {} 并循环填充所有 A 的成员来实现,但是考虑到接口(interface)成员和对象的冗余字段可以向上到几十个,这样做是不切实际的。

我试过了

let x = <A> a; // or let x = a as A;
console.log((x as any).b); // still exist

我还在 lodash 中查找并找到了 keyspick,但这些是针对类实例而不是接口(interface)。

最佳答案

接口(interface)在运行时不存在。您最好的选择是自己删除不需要的属性或创建具有所需属性的对象的副本。

例如,您可以使用这样的方法(从 this answer 复制的方法):

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

const a = { a: 1, b: '2' };
let copy : A = pick(a, "a");
console.log(copy);

关于Typescript - 如何将对象转换为界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44536455/

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