Typescript 基于同级中枚举值的属性类型

Typescript 基于同级中枚举值的属性类型,typescript,Typescript,假设我有一个枚举和一个接口 enum A { X, Y, Z } interface Test { a: A b: ??? } b的类型应取决于a的值,并映射到B1、B2、B3,具体取决于a是X、Y还是Z 我想要实现的是,如果我这样定义一个对象,typescript会抱怨: const x: Test = { a: A.X, b: {...} // this should complain if values are not in B1 } 你可以使用unio

假设我有一个枚举和一个接口

enum A {
   X, Y, Z
}

interface Test {
   a: A
   b: ???
}
b的类型应取决于
a
的值,并映射到
B1
B2
B3
,具体取决于
a
X
Y
还是
Z

我想要实现的是,如果我这样定义一个对象,typescript会抱怨:

const x: Test = {
   a: A.X,
   b: {...} // this should complain if values are not in B1
}
你可以使用union

 type Test = { a: A.X, b: B1 } |
      { a: A.Y, b: B2 } |
      { a: A.Z, b: B3 }

你知道我怎样才能让测试成为一个接口而不是一个类型吗?@AndreasHerd我认为还没有办法在接口中实现它。