如何在 typescript 中取消引用用OR连接的接口

zd287kbt  于 2023-02-20  发布在  TypeScript
关注(0)|答案(1)|浏览(105)

我需要在typescript中取消引用一个通过OR连接到另一个接口的接口
下面是我的等价代码

interface A {
  a: Array<B>;
}

interface A2 {
  a: C;
}

interface B {
  b: { bb: string; };
}

interface C {
  c: { d: string; };
}

interface D {
  abc: A | A2;
}

type E = D["abc"]["a"]["c"];

我在["c"]处收到错误消息property c does not exist on type...
如何在D["abc"]["a"]之后向下执行interface A2而不是A

nue99wik

nue99wik1#

如果你不能访问AA2,那么你可以做的最简单的事情就是提取所有拥有c属性的成员:

type E = Extract<D["abc"]["a"], { c: any }>["c"];

相关问题