enums की सीमाओं को समझें और as const के साथ frozen constants से अपने types प्राप्त करें।
इस पाठ को Kodokon में खोलेंenum शुरुआती दिनों से ही भाषा का हिस्सा रहा है, और आप इसे कई codebases में देखेंगे। यह नामित constants को एक ही type के तहत समूहित करता है, जिसे value और annotation दोनों के रूप में इस्तेमाल किया जा सकता है।
enum Role {
User = "USER",
Admin = "ADMIN",
}
function canDelete(role: Role): boolean {
return role === Role.Admin;
}फिर भी आधुनिक ecosystem इससे दूर जा रहा है। एक enum ऐसा syntax है जो JavaScript में मौजूद नहीं है: compiler runtime पर एक object उत्सर्जित करता है, जो कुछ tools को जटिल बना देता है और erasableSyntaxOnly option के साथ असंगत है। विकल्प: as const से frozen किया गया एक सामान्य object, जिससे आप type प्राप्त करते हैं।
const ROLES = {
User: "USER",
Admin: "ADMIN",
} as const;
type Role = (typeof ROLES)[keyof typeof ROLES];
function canDelete(role: Role): boolean {
return role === ROLES.Admin;
}as const arrays पर भी काम करता है: हर element एक read-only literal बन जाता है, और (typeof SIZES)[number] values का union बनाता है। सत्य का एक ही स्रोत चलने वाले code और types दोनों को भोजन देता है।
const SIZES = ["sm", "md", "lg"] as const;
type Size = (typeof SIZES)[number];
function isSize(value: string): value is Size {
return (SIZES as readonly string[]).includes(value);
}