Reverse Mapping की जानकारी
In this page:
enum EnumName { Member = 1 }
const name = EnumName[1]; // "Member"
const value = EnumName.Member; // 1
Basic Reverse Mapping
एक numeric enum को इसकी numeric value से index किया जा सकता है corresponding member name पाने के लिए — Color[0] आपको वापस string "Red" देता है अगर member 0 को यही कहा गया था, value से name की तरफ backward जाते हुए।
उदाहरण: Basic Reverse Mapping
enum Color {
Red,
Green,
Blue,
}
console.log(Color[0]);
Inspecting Numeric Enum Objects
Runtime पर, regular numeric enums में same object में baked एक forward mapping (name से number) और एक reverse mapping (number से name) दोनों होती हैं, यही कारण है कि यह trick बिना किसी extra code के काम करती है।
उदाहरण: Inspecting Numeric Enum Objects
enum Color { Red, Green, Blue }
console.log(Color.Red, Color[0]);
Reverse Mapping with Functions
एक छोटा helper function reverse mapping को wrap करके एक raw numeric enum value को logging या display के लिए एक readable name में बदल सकता है, indexing syntax को application code से बाहर रखते हुए।
उदाहरण: Reverse Mapping with Functions
enum Color { Red, Green, Blue }
function nameOf(value: Color): string {
return Color[value];
}
console.log(nameOf(Color.Green));
String Enums and Reverse Mapping
String enums को यह automatic reverse mapping नहीं मिलती, क्योंकि इनकी runtime values पहले से ही strings होती हैं — शुरुआत में mapback करने के लिए कोई separate numeric key नहीं होती।
उदाहरण: String Enums and Reverse Mapping
enum Status {
Pending = "PENDING",
Done = "DONE",
}
// Status["PENDING"] does NOT exist -- string enums have no reverse mapping.
console.log(Status.Pending);
When Reverse Mapping Matters
Reverse mapping एक stored numeric value को एक display name में बदलने के लिए handy है, लेकिन इसे deliberately उपयोग करें, क्योंकि यह actual runtime enum object के exist करने पर depend करती है — ऐसा कुछ जो const enums specifically प्रदान नहीं करते।
उदाहरण: When Reverse Mapping Matters
enum Level { Low, Medium, High }
function displayName(level: Level) {
return Level[level];
}
console.log(displayName(Level.High));
- एक string enum के साथ reverse mapping उपयोग करना, जैसे
Status["DONE"], जो exist नहीं करता। Object.keys(Color)से loop करना और यह देख कर surprised होना कि यह names और numbers दोनों list करता है।- यह मान लेना कि reverse mapping एक
const enumके साथ काम करती है, जिसका कोई runtime object नहीं होता।
- Numeric और string enums named constants define करते हैं, और const और ambient enums ज़्यादा specialized cases cover करते हैं।
- Numeric enums value से वापस name तक reverse mapping support करते हैं।
- Union types enums का एक alternative हैं, इसलिए यह जानना मदद करता है कि कब कौन सा चुनें।
Chapter Quiz — Complete all 6 topics to unlock
0/6 topics done
Complete these topics first: