prefer-enum-initializers
Require each enum member value to be explicitly initialized.
This rule recommends having each enum
s member value explicitly initialized.
enum
s are a practical way to organize semantically related constant values. However, by implicitly defining values, enum
s can lead to unexpected bugs if it's modified without paying attention to the order of its items.
Attributes
- Included in configs
- ✅ Recommended
- 🔒 Strict
- Fixable
- 🔧 Automated Fixer
- 💡 Suggestion Fixer
- 💭 Requires type information
Rule Details
enum
s infers sequential numbers automatically when initializers are omitted:
enum Status {
Open, // infer 0
Closed, // infer 1
}
If a new member is added to the top of Status
, both Open
and Closed
would have its values altered:
enum Status {
Pending, // infer 0
Open, // infer 1
Closed, // infer 2
}
Examples of code for this rule:
- ❌ Incorrect
- ✅ Correct
enum Status {
Open = 1,
Close,
}
enum Direction {
Up,
Down,
}
enum Color {
Red,
Green = 'Green'
Blue = 'Blue',
}
enum Status {
Open = 'Open',
Close = 'Close',
}
enum Direction {
Up = 1,
Down = 2,
}
enum Color {
Red = 'Red',
Green = 'Green',
Blue = 'Blue',
}
Options
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-enum-initializers": "warn"
}
};
This rule is not configurable.
When Not To Use It
If you don't care about enum
s having implicit values you can safely disable this rule.