Typescript - 如何将对象转换为接口

时间:2017-06-14 05:51:05

标签: typescript

假设有一个接口

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中查找并找到keyspick,但这些是针对类实例而非接口的。

2 个答案:

答案 0 :(得分:3)

运行时不存在接口。您最好的选择是自己删除不需要的属性,或者使用您需要的属性创建对象的副本。

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

userInput

答案 1 :(得分:2)

基本上你的问题归结为将接口的所有属性作为字符串数组获取然后制作仅包含这些属性的对象的副本的问题。制作一个对象的副本非常简单,那里有很多例子。但是第一个问题要难以解决。

据我所知,完成这项工作的唯一方法是#34;现在&#34;是在编译期间为打字稿使用自定义变换器。这是一个example,但请注意 - 这需要使用尚未稳定发布的typescript 2.4+。

相关问题