假设有一个接口
interface A {
a: number;
}
目前我有一个原始对象
const a = { a: 1, b: '2' };
我希望有一种方法可以让x
成为{ a: 1 }
,其中只包含在界面中定义的成员。
这可以通过创建一个空{}
并循环并填写所有A
成员来实现,但考虑到界面成员和对象的冗余字段可以几十个,这样做是不切实际的。
我试过
let x = <A> a; // or let x = a as A;
console.log((x as any).b); // still exist
我也在lodash
中查找并找到keys
和pick
,但这些是针对类实例而非接口的。
答案 0 :(得分:3)
答案 1 :(得分:2)
基本上你的问题归结为将接口的所有属性作为字符串数组获取然后制作仅包含这些属性的对象的副本的问题。制作一个对象的副本非常简单,那里有很多例子。但是第一个问题要难以解决。
据我所知,完成这项工作的唯一方法是#34;现在&#34;是在编译期间为打字稿使用自定义变换器。这是一个example,但请注意 - 这需要使用尚未稳定发布的typescript 2.4+。