How can Typescript enum be defined with object values? with all solutions

 Question:

How can TypeScript enums be defined with object values, and what are the various solutions to achieve this?

Answer:

In TypeScript, enums are a way to define a set of named constant values. By default, enums have numeric values, but in some cases, you might want to associate more complex data or objects with enum members. This is where enums with object values come into play.

Here are a few solutions to define TypeScript enums with object values:

Solution 1: Inline Object Literal

You can directly assign object literals to enum members:

typescript
enum Fruit {
Apple = { color: 'red', taste: 'sweet' },
Banana = { color: 'yellow', taste: 'creamy' },
Orange = { color: 'orange', taste: 'citrusy' },
}

// Accessing enum values
const appleColor = Fruit.Apple.color; // 'red'
const bananaTaste = Fruit.Banana.taste; // 'creamy'

Solution 2: Separate Object Assignment

Define the enum members first and then assign object values:

typescript
enum Fruit {
Apple,
Banana,
Orange,
}

// Assign object values
Fruit.Apple = { color: 'red', taste: 'sweet' };
Fruit.Banana = { color: 'yellow', taste: 'creamy' };
Fruit.Orange = { color: 'orange', taste: 'citrusy' };

// Accessing enum values
const appleColor = Fruit.Apple.color; // 'red'
const bananaTaste = Fruit.Banana.taste; // 'creamy'

Solution 3: Using a Helper Function

Create a helper function to associate object values with enum members:

typescript
enum Fruit {
Apple,
Banana,
Orange,
}

// Helper function to set object values
function setFruitProperties(fruit: Fruit, color: string, taste: string): void {
Fruit[fruit] = { color, taste };
}

// Assigning object values using the helper function
setFruitProperties(Fruit.Apple, 'red', 'sweet');
setFruitProperties(Fruit.Banana, 'yellow', 'creamy');
setFruitProperties(Fruit.Orange, 'orange', 'citrusy');

// Accessing enum values
const appleColor = Fruit.Apple.color; // 'red'
const bananaTaste = Fruit.Banana.taste; // 'creamy'

These solutions provide different approaches to achieve enums with object values in TypeScript, allowing you to associate more meaningful data with each enum member. Choose the one that best fits your coding style and project requirements.

একটি মন্তব্য পোস্ট করুন

0 মন্তব্যসমূহ