← Back to TypeScript Course | Chapter 19: Enums Deep Dive | Lesson 6 of 6

Reverse Mapping की जानकारी

TypeScript में numeric enums names से numbers तक और numbers से वापस names तक एक runtime mapping generate करते हैं। यह reverse mapping regular numeric enums की एक feature है और string enums पर उसी तरह apply नहीं होती।
Syntax
typescript
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

typescript
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

typescript
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

typescript
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

typescript
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

typescript
enum Level { Low, Medium, High }
function displayName(level: Level) {
  return Level[level];
}
console.log(displayName(Level.High));
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. एक string enum के साथ reverse mapping उपयोग करना, जैसे Status["DONE"], जो exist नहीं करता।
  2. Object.keys(Color) से loop करना और यह देख कर surprised होना कि यह names और numbers दोनों list करता है।
  3. यह मान लेना कि 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:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.