我有一个这样的枚举和接口
enum MyEnum {
ALL, OTHER
}
interface Props {
sources: Omit<MyEnum, MyEnum.ALL>
}
const test: Props = { sources: MyEnum.ALL } // should complain
为什么它不省略MyEnum.All
?我正在使用打字稿3.6.4
答案 0 :(得分:2)
Omit
将忽略界面中的键。但是枚举是不同的。
Imo最好的枚举比较是该枚举类型的实例的并集。像type MyEnum = MyEnum.All | MyEnum.OTHER
。
因此,您不想忽略,而是从联合类型中排除类型:
enum MyEnum {
ALL, OTHER, SOME, MORE
}
interface Props {
sources: Exclude<MyEnum, MyEnum.ALL | MyEnum.SOME>
}
const test: Props = { sources: MyEnum.ALL } // does complain now
答案 1 :(得分:1)
我认为您正在寻找Exclude
实用程序类型:
sources: Exclude<MyEnum, MyEnum.ALL>