如何根据扩展的接口打字稿解耦对象属性?

时间:2017-12-14 20:31:57

标签: angular typescript

我有一个扩展多个接口的接口

interface A extends B, C {
  a1: type;
  a2: type;
  a3: type;
}

interface B {
  b1: type;
  b2: type;
  b3: type;
}

interface C {
  c1: type;
  c2: type;
  c3: type;
}

A和I的服务器响应具有B和C类型的单独对象。我想要做的是使用类型将其解耦,这样我就不必这样做了

a:A = response
b = { b1: a.b1, b2: a.b2 ... }
c = { c1: a.c1, c2: a.c2 ... }

1 个答案:

答案 0 :(得分:2)

您可以简单地使用断言类型

如果您执行类似

的操作
returnedObject as B 

这将基本上提取对象的B部分,只要它是兼容的。这意味着它需要在B合同中定义所有属性。如果你这样做,这对C来说也是如此

returnedObject as C

基本上类型断言是一种转换,但在编译时。不像常规演员那样在运行时。

您告诉TypeScript您可以完全控制所返回的对象类型,并且您确切知道所返回内容的格式。