Hapus entri dari enum ketikan
Saya memiliki 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
}
Jadi di satu tempat, saya ingin menggunakan enum ini tetapi menghapus nilai deprecated ( Floor). Apakah ada cara yang bisa kami lakukan?
Saya telah mencoba di bawah ini
export type NewFloorTypeEnum = {
[key in Exclude<FloorTypeEnum , FloorTypeEnum .Floor> ]?: string
};
Saya juga mempertahankan enum warisan
export enum LegacyFloorTypeEnum {
FLOOR = 'floor'
}
Tapi saya bingung bagaimana menggunakan tipe itu. Saya ingin menggunakan kunci dan nilai enum dan kembali ke frontend. Persyaratan utamanya adalah mendapatkan enum yang setara dengan FloorTypeEnum - LegacyFloorTypeEnum. Saya tidak ingin membuat enum baru untuk nilai lantai baru.
Terima kasih
Jawaban
Jika saya memahami Anda dengan benar, apakah hal seperti ini sudah cukup?
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;
Saya tidak percaya bahwa Ketik dapat memblokir LANTAI karena keduanya berbagi kunci / nilai yang sama (saya mungkin salah dalam asumsi ini, jadi silakan ambil dengan sebutir garam). Namun, jika Anda memiliki nilai baru, dalam contoh yang saya gunakan NOT_FLOOR, kesalahan akan muncul jika Anda mencoba menggunakan nilai dalam enum yang tidak cocok dengan FloorTypeEnum.
Beri tahu saya jika ini tidak memenuhi kebutuhan Anda. Selamat membuat kode.