Eslint rules for dealing with Enums peculiarities

As of now Enum have their peculiarities in Typescript; they can behave hmm... How should I put it? Inconsistenly. If you still love Enums then, let me suggest some EsLint rules for writing better Enum Table of Contents Enums peculiarities Helpful ESLint Rules for Enums! Prerequisites EsLint: New to ESLint? It helps you write better JavaScript and TypeScript. https://typescript-eslint.io/ Enums peculiarities I am going to walk you through a few peculiarities I’ve come across while building components using declarative rendering. Let me show you with examples Enums with string or number values Enums behave different when its created with string values versus numbers. With string values enum TransferStatus { Pending = 'pending', Completed = 'completed', Failed = 'failed', } console.log(Object.keys(TransferStatus)) // Output : ["Pending", "Completed", "Failed"] With number values enum TransferStatus { Pending, Completed, Failed, } console.log(Object.keys(TransferStatus)) // Output : ["0", "1", "2", "Pending", "Completed", "Failed"] //

Apr 29, 2025 - 19:16
 0
Eslint rules for dealing with Enums peculiarities

As of now Enum have their peculiarities in Typescript; they can behave hmm... How should I put it? Inconsistenly. If you still love Enums then, let me suggest some EsLint rules for writing better Enum

Table of Contents

  • Enums peculiarities
  • Helpful ESLint Rules for Enums!

Prerequisites

Enums peculiarities

I am going to walk you through a few peculiarities I’ve come across while building components using declarative rendering.

Let me show you with examples

Enums with string or number values

Enums behave different when its created with string values versus numbers.

With string values
 enum TransferStatus {
  Pending = 'pending',
  Completed = 'completed',
  Failed = 'failed',
}

console.log(Object.keys(TransferStatus)) 
// Output : ["Pending", "Completed", "Failed"] 

With number values
 enum TransferStatus {
  Pending,
  Completed,
  Failed,
}

console.log(Object.keys(TransferStatus)) 
// Output : ["0", "1", "2", "Pending", "Completed", "Failed"] 
//