Skip to content

Enhancement: [switch-exhaustiveness-check] Add ability to ignore default case #8247

Closed
@jakeleventhal

Description

@jakeleventhal

Before You File a Proposal Please Confirm You Have Done The Following...

My proposal is suitable for this project

  • I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).

Link to the rule's documentation

https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md

Description

#3616 (comment)

This comment was never implemented. The case that is not possible to detect is case 1 from the original thread

This should throw an error because all cases are not enumerated (despite there being a fallthrough).

Fail

declare const literal: "a" | "b";

switch (literal) {
  case "a": break;
  default: break;
}

Pass

declare const literal: "a" | "b";

// Valid
switch (literal) {
  case "a": break;
  case "b": break;
}

// Valid
switch (literal) {
  case "a": break;
  case "b": break;
  default: break;
}

Additional Info

Why is this useful? Say you want to define explicit behavior for each enum value. I then add an enum value to my type. Having an error in this case will be an extra catch that will allow me to ensure that I remember to update the switch statements. Essentially I want to be able to always define behavior for known types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    accepting prsGo ahead, send a pull request that resolves this issueenhancement: plugin rule optionNew rule option for an existing eslint-plugin rulelocked due to agePlease open a new issue if you'd like to say more. See https://typescript-eslint.io/contributing.package: eslint-pluginIssues related to @typescript-eslint/eslint-plugin

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions