Lint Rules

noConstEnum (since v11.0.0)

Disallow TypeScript const enum

Const enums are enums that should be inlined at use sites. Const enums are not supported by bundlers and are incompatible with the isolatedModules mode. Their use can lead to import inexistent values (because const enums are erased).

Thus, library authors and bundler users should not use const enums.

Examples

Invalid

const enum Status {
  Open,
  Close,
}
nursery/noConstEnum.js:1:1 lint/nursery/noConstEnum  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   The enum declaration should not be const
  
  > 1 │ const enum Status {
   ^^^^^^^^^^^^^^^^^^^
  > 2 │   Open,
  > 3 │   Close,
  > 4 │ }
   ^
    5 │ 
  
   Const enums are not supported by bundlers and are incompatible with the 'isolatedModules' mode. Their use can lead to import inexistent values.
  
   See TypeScript Docs for more details.
  
   Safe fix: Turn the const enum into a regular enum.
  
    1 │ const·enum·Status·{
  ------             

Valid

enum Status {
  Open,
  Close,
}