Eintrag aus dem Enum-Typoskript entfernen
Ich habe eine Aufzählung
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
}
An einer Stelle möchte ich diese Aufzählung verwenden, aber den veralteten Wert ( Floor) entfernen . Können wir das auf irgendeine Weise tun?
Ich habe es unten versucht
export type NewFloorTypeEnum = {
[key in Exclude<FloorTypeEnum , FloorTypeEnum .Floor> ]?: string
};
Ich pflege auch eine Legacy-Aufzählung
export enum LegacyFloorTypeEnum {
FLOOR = 'floor'
}
Aber ich bin verwirrt darüber, wie man diesen Typ benutzt. Ich möchte den Schlüssel und den Wert der Aufzählung verwenden und zum Frontend zurückkehren. Die ultimative Voraussetzung ist, eine Aufzählung zu erhalten, die äquivalent zu ist FloorTypeEnum - LegacyFloorTypeEnum. Ich möchte keine neue Aufzählung für neue Bodenwerte erstellen.
Vielen Dank
Antworten
Wenn ich Sie richtig verstehe, würde so etwas ausreichen?
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;
Ich glaube nicht, dass Typescript FLOOR blockieren kann, da beide denselben Schlüssel / Wert haben (ich kann mich in dieser Annahme irren, also nehmen Sie bitte ein Körnchen Salz). Wenn Sie jedoch einen neuen Wert haben, wird in diesem Beispiel, das ich verwendet habe NOT_FLOOR, ein Fehler ausgegeben, wenn Sie versuchen, einen Wert in der Aufzählung zu verwenden, der nicht mit dem übereinstimmt FloorTypeEnum.
Lassen Sie mich wissen, wenn dies nicht Ihren Anforderungen entspricht. Viel Spaß beim Codieren.