使用枚举作为union中的文字类型的Typescript

使用枚举作为union中的文字类型的Typescript,typescript,enums,union-types,Typescript,Enums,Union Types,我想创建一个根据成员的值而变化的类型。救援的联合类型: type SomeType={ 方法:1, } | { 方法:2 | 3, 一些额外的数据:数字, } 如果方法是一个文本数1,它不需要someAdditionalData,如果它是2或3,它就需要。 但是,文字有一些含义,为了编码,我想使用枚举: enum方法{ 1=1, 二等于二, 三等于三, } 类型SomeType={ 方法:方法一,, } | { 方法:方法二|方法三, 一些额外的数据:数字, } 不幸的是,这似乎破坏了输入信

我想创建一个根据成员的值而变化的类型。救援的联合类型:

type SomeType={
方法:1,
} | {
方法:2 | 3,
一些额外的数据:数字,
}
如果方法是一个文本数
1
,它不需要
someAdditionalData
,如果它是2或3,它就需要。
但是,文字有一些含义,为了编码,我想使用枚举:

enum方法{
1=1,
二等于二,
三等于三,
}
类型SomeType={
方法:方法一,,
} | {
方法:方法二|方法三,
一些额外的数据:数字,
}
不幸的是,这似乎破坏了输入信息:

const someThing:SomeType={
方法:方法二
}
不会导致IDE或TS编译器发出警告

你知道这是可行的还是我做错了什么吗?如果不支持这一点,那么处理这种情况的好方法是什么(考虑到您需要将
方法的最终实现
设置为一个数字,并希望通过一个命名参数对其进行处理)

这是TS 4.1

编辑:一个相当好的解决方案是定义一个对象而不是枚举,例如:

const方法={
一比一,,
二:二等于二,,
三:三等于三
}
类型SomeType={
方法:方法的类型,
} | {
方法:类型法。两种|类型法。三种,
一些额外的数据:数字,
}
这将确保正确的类型信息,但严格来说与使用原始问题中的枚举不同。

Hmm,我无法重现:。请考虑修改这个问题中的代码,以便构成一个当它落入独立IDE时,清楚地显示出你所面临的问题。