首先,创建一个将枚举键与类型相关联的类型:
enum MyEnum {
A,
B
}
type TypeMap = {
[MyEnum.A]:string,
[MyEnum.B]:number
}
interface ObjInterface<T extends keyof TypeMap> {
obj: T,
objData: TypeMap[T]
}
interface SecondaryInterface {
value: string,
objChosen: ObjInterface<keyof TypeMap>
}
然后创建一个对象,其中根据TypeMap验证objData的类型:
myObj:SecondaryInterface = {value:"", objChosen:{obj:MyEnum.A, objData:"a string"}}
这在一定程度上是可行的,但是当我输入objData时,它给出一个联合类型提示‘字符串|数字’,而不仅仅是‘字符串’,因为它从TypeMap的键而不是确切的TypeMap[T]推断类型.
是否有可能获得类型映射中所使用的枚举键及其关联类型集的精确类型匹配?
可以使用类型断言使其工作,但是否可以在没有类型断言的情况下使其工作?
myObj:SecondaryInterface = {value:"", objChosen:<ObjInterface<MyEnum.A>>{obj:MyEnum.A, objData:"a string"}}