Skip to main content

switch-exhaustiveness-check

Exhaustiveness checking in switch with union type.

Union type may have a lot of parts. It's easy to forget to consider all cases in switch. This rule reminds which parts are missing. If domain of the problem requires to have only a partial switch, developer may explicitly add a default clause.

Rule Details

Examples of code for this rule:

type Day =
| 'Monday'
| 'Tuesday'
| 'Wednesday'
| 'Thursday'
| 'Friday'
| 'Saturday'
| 'Sunday';

const day = 'Monday' as Day;
let result = 0;

switch (day) {
case 'Monday': {
result = 1;
break;
}
}

Options

// .eslintrc.json
{
"rules": {
"@typescript-eslint/switch-exhaustiveness-check": "warn"
}
}

This rule is not configurable.

When Not To Use It

If program doesn't have union types with many parts. Downside of this rule is the need for type information, so it's slower than regular rules.

Attributes

  • Configs:
    • ✅ Recommended
    • 🔒 Strict
  • 🔧 Fixable
  • 💭 Requires type information