我有一个枚举
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
的枚举。我不想为新的底值创建一个新的枚举。
谢谢
答案 0 :(得分:0)
如果我对您的理解正确,那么就足够了吗?
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
}
enum LegacyFloorTypeEnum {
FLOOR = 'floor',
NOT_FLOOR = 'not_floor'
}
type NewFloorTypeEnum<T> = {
[K in keyof T]: T[K];
}
// test case
const ok: NewFloorTypeEnum<FloorTypeEnum> = LegacyFloorTypeEnum.NOT_FLOOR;
我不认为Typescript可以阻止FLOOR,因为它们都共享相同的键/值(在这种假设下,我可能是错的,因此请多加注意)。但是,如果要使用一个新值,在此示例中,我使用了NOT_FLOOR
,如果您尝试在枚举中使用与FloorTypeEnum
不匹配的值,则会抛出错误。 / p>
让我知道这是否不能满足您的需求。编码愉快。