假设有一个接口打字稿 - 如何投放对象的接口
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
,但这些都是针对类的实例,而不是接口。
这不是“铸造”,其不即使在TS存在。这是“挑选”。 – 2017-06-14 06:24:20
@Mike它不清楚你想达到什么。 ** ts **鸭子打字让'a'类型下变换为'A',并且使用打字稿编辑器,您只能访问'A'的成员,但真正的对象始终是'a'类型。因为** ts **类型擦除意味着对象在运行时是'Object'类型,所以您可以看到整个'a'。如果你想__otherother__对象,你必须复制它的属性(如选择解决方案建议)。相反,如果你想编译时检查使用'A',不要担心真实的对象是什么。 – Aris2World
@ Aris2World我有一个接口定义,并希望将具有冗余字段的对象转换为它。另外,我不想明确说明要选择的字段。 – Mike