【发布时间】:2021-02-20 20:13:19
【问题描述】:
我有一个枚举
export enum FloorTypeEnum {
ENGINEERED_HARDWOOD = 'engineered_hardwood',
SOLID_HARDWOOD = 'solid_hardwood',
LAMINATE = 'laminate',
LVT_VINYL = 'vinyl',
CARPET = 'carpet',
RUG = 'rug',
CERAMIC = 'ceramic',
CONCRETE = 'concrete',
EPOXY = 'epoxy',
FLOOR = 'floor', // deprecated value for backward compatibility
}
所以在一个地方,我想使用这个枚举,但删除不推荐使用的值 (Floor)。
我们有什么办法吗?
下面我试过了
export type NewFloorTypeEnum = {
[key in Exclude<FloorTypeEnum , FloorTypeEnum .Floor> ]?: string
};
我也在维护一个遗留枚举
export enum LegacyFloorTypeEnum {
FLOOR = 'floor'
}
但我对如何使用这种类型感到困惑。我想使用枚举的键和值并返回到前端。
最终要求是获得一个等同于FloorTypeEnum - LegacyFloorTypeEnum 的枚举。我不想为新的楼层值创建一个新的枚举。
谢谢
【问题讨论】:
-
通常这是您对库/API 进行版本化的目的,因此您可以切换到完全删除此值的下一个版本。取而代之的是,您可能希望维护一个“要忽略的值”列表,而不是尝试删除它,直到您准备好进行适当的主要更新,其中所有不推荐使用的字段都被删除。
-
是的。我正在过渡到重大更新,但还没有。我保留了另一个枚举,例如 ``` enum LegacyFloorType { FLOOR = 'floor' } ``` 那我该如何排除呢?
-
你运行的是什么版本的打字稿?
-
@Dom 我正在使用 3.6.4
-
this answer 可能有帮助吗?
标签: javascript typescript ecmascript-6 enums