【发布时间】:2022-07-25 18:45:12
【问题描述】:
如何实现一个泛型类型,将变量的值限制为枚举中的任何类型?
enum SexTypes {
Male,
Female
}
这将是要实现的类型:
type TApplyEnumConstraint<T> ........
要实现这一点:
let sex: TApplyEnumConstraint<SexTypes> = "Male" // ==> OK
let sex: TApplyEnumConstraint<SexTypes> = "Female" // ==> OK
let sex: TApplyEnumConstraint<SexTypes> = "foo" // ==> Error
【问题讨论】:
-
你真的想要这里有一个枚举吗?通常你会使用枚举本身,
let sex: SexTypes = ...。在这种情况下,type SexTypes = "Male" | "Female";可能更能满足您的需求? -
Right 在这种情况下也是如此,但我想知道如何使用枚举。如果我想根据已经创建的枚举类型进行约束
-
那你为什么不使用枚举,
let sex: SexTypes = SexTypes.Male?如果这是运行时数据,则无论如何类型都将被删除。 -
我找到了一种将枚举转换为字符串联合类型的方法:type TSexTypes= keyof typeof Sextypes。使用这个,工作,但我想如果有一种方法可以将它转换为通用,所以我可以将任何枚举转换为它的类型键的字符串的联合
标签: typescript