An Typescript enum helps to organize a series of related values. Most of the programming languages like C, C++, Java, C#, VB.Net provide the enum data type but JavaScript does not provide the enum. We can use the enum for decision making statement and it make the code readable. Use enum keyword to declare an enum.
enum Gender{ Male, FeMale } console.log(Gender); // { '0': 'Male', '1': 'FeMale', Male: 0, FeMale: 1 }
TypeScript support three types of enum and these are as follows
enum Gender{ Male=1, FeMale=2 } console.log(Gender); //{ '1': 'Male', '2': 'FeMale', Male: 1, FeMale: 2 } let male = Gender.Male; let female = Gender.FeMale; console.log(male); // output : 1 console.log(female); // output : 2
In the above code snippet, Create the Gender enum with two values(Male, Female). Initialize the value of Male to 1 and FeMale to 2.
enum Gender{ Male='Male', FeMale='FeMale' } console.log(Gender); //{ Male: 'Male', FeMale: 'FeMale' } let male = Gender.Male; let female = Gender.FeMale; console.log(male); // output : Male console.log(female); // output :FeMale
In the above code snippet, Create the Gender enum with two values(Male, Female). Initialize with string value of Male to “Male” and FeMale to “FeMale”.
enum Gender{ Male=1, FeMale='FeMale' } console.log(Gender); //{ '1': 'Male', Male: 1, FeMale: 'FeMale' } let male = Gender.Male; let female = Gender.FeMale; console.log(male); // output : 1 console.log(female); // output :FeMale
In the above code snippet, Create a Gender enum with two values(Male, Female). Initialize with different data type number and string(1, FeMale).
Enum with default value
enum WeekDay{ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } console.log(WeekDay); //output // { // '0': 'Monday', // '1': 'Tuesday', // '2': 'Wednesday', // '3': 'Thursday', // '4': 'Friday', // '5': 'Saturday', // '6': 'Sunday', // Monday: 0, // Tuesday: 1, // Wednesday: 2, // Thursday: 3, // Friday: 4, // Saturday: 5, // Sunday: 6 // } console.log(WeekDay.Wednesday); // output : 2
In the above code snippet, create a WeekDay enum with any values. If we do not assign any value, then first value take the number value 0 and other values of enum will be increment by 1.
enum WeekDay{ Monday =1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } console.log(WeekDay); // { // '1': 'Monday', // '2': 'Tuesday', // '3': 'Wednesday', // '4': 'Thursday', // '5': 'Friday', // '6': 'Saturday', // '7': 'Sunday', // Monday: 1, // Tuesday: 2, // Wednesday: 3, // Thursday: 4, // Friday: 5, // Saturday: 6, // Sunday: 7 // } console.log(WeekDay.Wednesday); // 3
In the above code snippet, assign the first member of enum(Monday) with number value 1. The remaining members value will be incremented by 1;
There are two ways to access the enum member values these are as follows
enum WeekDay{ Monday, Tuesday, Wednesday , Thursday, Friday, Saturday, Sunday } let enum_value1= WeekDay.Wednesday; let enum_value2 =WeekDay['Wednesday'] console.log(enum_value1); // output : 2 console.log(enum_value2); // output : 2
const weekNumber=(dayName:string ):number=>{ if(dayName == 'Wednesday'){ return 3; } else if(dayName =='Thursday'){ return 4 } else if(dayName =='Friday'){ return 5 } return 99 } enum WeekDay{ Monday =1, Tuesday=2, Wednesday=weekNumber('Wednesday'), Thursday=weekNumber('Thursday'), Friday=weekNumber('Friday'), Saturday=(Friday+1), Sunday=7 } console.log(WeekDay); // { // '1': 'Monday', // '2': 'Tuesday', // '3': 'Wednesday', // '4': 'Thursday', // '5': 'Friday', // '6': 'Saturday', // '7': 'Sunday', // Monday: 1, // Tuesday: 2, // Wednesday: 3, // Thursday: 4, // Friday: 5, // Saturday: 6, // Sunday: 7 // }
In above code snippet, enum members values are initialize with const and computed value both.
In computed enum , all the unassigned member come first or come after the number member value otherwise it will throw the compile time error like below code snippet.
Enum WeekDay{ Monday =1, Tuesday=2, Wednesday=weekNumber(‘Wednesday’), Thursday=weekNumber(‘Thursday’), Friday, //error TS1061: Enum member must have initializer. Saturday=(Friday+1), Sunday=7 }
Enum reverse mapping means you can access the member value and member name from its value
enum WeekDay{ Monday, Tuesday, Wednesday , Thursday, Friday, Saturday, Sunday } let enum_value1= WeekDay.Wednesday; // access the member value let enum_value2 =WeekDay['Wednesday'] // access the member value let enum_value3 =WeekDay[2] // access the member name from its value console.log(enum_value1); // output : 2 console.log(enum_value2); // output : 2 console.log(enum_value3); // output Wednesday
enum WeekDay{ Monday, Tuesday, Wednesday , Thursday, Friday, Saturday, Sunday } function getWeekDayNumber(weekDay:WeekDay){ console.log(weekDay); } getWeekDayNumber(WeekDay.Sunday); // output : 6 getWeekDayNumber(WeekDay.Monday); //// output : 6
enum WeekDay{ Monday, Tuesday, Wednesday , Thursday, Friday, Saturday, Sunday } function getWeekDay(day:string):WeekDay{ if(day=='Monday') { return WeekDay.Monday } else if(day=='Tuesday'){ return WeekDay.Tuesday } return WeekDay.Sunday } let result : WeekDay = getWeekDay('Monday'); let result1 : WeekDay = getWeekDay('Tuesday'); console.log(result); // 0 console.log(result1); // 1