== Why is this an issue? include::../description.adoc[] === Noncompliant code example [source,javascript] ---- switch (param) { //missing default clause case 0: doSomething(); break; case 1: doSomethingElse(); break; } switch (param) { default: // default clause should be the last one error(); break; case 0: doSomething(); break; case 1: doSomethingElse(); break; } ---- === Compliant solution [source,javascript] ---- switch (param) { case 0: doSomething(); break; case 1: doSomethingElse(); break; default: error(); break; } ---- === Exceptions The rule ignores ``++switch++`` statements where the discriminant is a TypeScript union and there is a ``++case++`` branch for each constituent. [source,javascript] ---- type Season = 'Spring' | 'Summer' | 'Fall' | 'Winter'; let season: Season; switch (season) { case 'Spring': wakeUp(); break; case 'Summer': getOut(); break; case 'Fall': saveFood(); break; case 'Winter': sleep(); break; } ---- The same applies for TypeScript enums. [source,javascript] ---- enum Direction { Up, Down } let dir: Direction; switch (dir) { case Direction.Up: getUp(); break; case Direction.Down: getDown(); break; } ---- include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]