在Typescript中,我有一个枚举
export enum CarBrands {
Toyota = "TOYOTA"
Ford = "FORD"
.....
}
我想创建此枚举的一个子集,如下所示,但似乎无法实现
enum JapaneseCars {
CarBrands.Toyota
}
或创建一个具有子集的对象
const JapaneseCars = {
Carbrands.Toyota
}
有没有什么方法可以创建一个对象或枚举,使用另一个现有枚举的值?
我无法将CarBrands枚举更改为其他数据类型
5条答案
按热度按时间czq61nw11#
可以创建
type
和const
组合,其行为类似于作为另一个枚举的子集的枚举。缺点:这个解决方案强迫您让任何
enum
的键与它们的值匹配(或者我还没有找到处理这种情况的解决方案)如果你想把
CarBrand
类型的未知值Map到FrenchCarBrand
类型的值,它将无法工作:为此,您需要一个类型保护:
它将允许您决定遇到不需要的值时应采取的操作
我制作了一个TypeScript Playground,展示了所有这些代码,并在其中执行了类型检查
ljo96ir52#
我觉得你在找这样的东西-
vc6uscn93#
一个可能的解决方法是使用Extract〈Type,Union〉创建一个具有所需Enum值的类型,而不需要创建一个Enum键等于其值的常量。
当然,它不会创建一个新的Enum,但是您将能够键入常量或属性,并且它将确保从原始Enum中提取的值的类型。
wnrlj8wa4#
我认为您需要创建一个带有可选值的索引对象:
对于这个特定的例子,只使用
Set<CarBrand>
可能会更清楚:1dkrff035#
你可以为每一个枚举成员创建一个变量,如果你有很多枚举成员的话,这会很乏味,但是它看起来像这样。
或者你可以用一个简单的方法