Enum typecript'ten girişi kaldır
Bir numaram var
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
}
Yani bir yerde, bu numaralandırmayı kullanmak ama kullanımdan kaldırılan değeri ( Floor) kaldırmak istiyorum . Yapabileceğimiz bir yol var mı?
Aşağıda denedim
export type NewFloorTypeEnum = {
[key in Exclude<FloorTypeEnum , FloorTypeEnum .Floor> ]?: string
};
Ayrıca eski bir numaralandırmayı sürdürüyorum
export enum LegacyFloorTypeEnum {
FLOOR = 'floor'
}
Ama bu tipin nasıl kullanılacağı konusunda kafam karıştı. Numaralandırmanın anahtarını ve değerini kullanmak ve ön uca dönmek istiyorum. Nihai gereksinim, eşdeğer olan bir enum elde etmektir FloorTypeEnum - LegacyFloorTypeEnum. Yeni taban değerleri için yeni bir sıralama oluşturmak istemiyorum.
Teşekkürler
Yanıtlar
Seni doğru anlıyorsam, böyle bir şey yeterli olur mu?
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;
Her ikisi de aynı anahtarı / değeri paylaştıkları için Typescript'in FLOOR'u engelleyebileceğine inanmıyorum (Bu varsayımda yanlış olabilirim, bu yüzden lütfen biraz tuzla alın). Bununla birlikte, yeni bir değere sahip olsaydınız, bu kullandığım örnekte NOT_FLOOR, numaralandırmada. İle eşleşmeyen bir değer kullanmayı denerseniz bir hata atar FloorTypeEnum.
İhtiyaçlarınızı karşılamıyorsa bana bildirin. Mutlu kodlamalar.