ลบรายการจาก enum typescript
ฉันมี enum
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 นี้ แต่ลบค่าที่เลิกใช้แล้ว ( Floor) มีวิธีใดบ้างที่เราสามารถทำได้?
ฉันได้ลองด้านล่างแล้ว
export type NewFloorTypeEnum = {
[key in Exclude<FloorTypeEnum , FloorTypeEnum .Floor> ]?: string
};
ฉันยังคงรักษา enum มรดกไว้
export enum LegacyFloorTypeEnum {
FLOOR = 'floor'
}
แต่ฉันสับสนกับวิธีใช้ประเภทนั้น ฉันต้องการใช้คีย์และค่าของ enum และกลับไปที่ส่วนหน้า ความต้องการที่ดีที่สุดคือการได้รับ enum FloorTypeEnum - LegacyFloorTypeEnumซึ่งเทียบเท่ากับ ฉันไม่ต้องการสร้าง enum ใหม่สำหรับค่าพื้นใหม่
ขอบคุณ
คำตอบ
ถ้าฉันเข้าใจคุณถูกต้องสิ่งนี้จะเพียงพอหรือไม่
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มันจะทำให้เกิดข้อผิดพลาดหากคุณลองใช้ค่าใน enum ที่ไม่ตรงกับFloorTypeEnum.
โปรดแจ้งให้เราทราบหากสิ่งนี้ไม่ตรงกับความต้องการของคุณ มีความสุขในการเขียนโค้ด