Cannot find name 'MyEnum'
Enum member must have initializer
'const' enums can only be used in property or index access expressions
TypeScript enums have several gotchas. Here are the most common issues.
Fix 1: Enum Not Imported
// β Using enum without importing
const status = Status.Active; // π₯ Cannot find name
// β
Import it
import { Status } from './types';
Fix 2: String Enum Missing Initializer
// β String enums need explicit values
enum Color {
Red, // OK (numeric)
Green = 'green',
Blue, // π₯ Must have initializer after string member
}
// β
Initialize all members
enum Color {
Red = 'red',
Green = 'green',
Blue = 'blue',
}
Fix 3: const enum With isolatedModules
// β const enums don't work with isolatedModules (Vite, Next.js)
const enum Direction { Up, Down }
// β
Use regular enum
enum Direction { Up, Down }
// β
Or use a const object (often better)
const Direction = { Up: 'up', Down: 'down' } as const;
type Direction = typeof Direction[keyof typeof Direction];
Fix 4: Enum as Function Parameter
// β Passing string where enum expected
function move(dir: Direction) {}
move('up'); // π₯ Type '"up"' is not assignable
// β
Use the enum value
move(Direction.Up);
Fix 5: Use Union Types Instead
// β
Often simpler than enums
type Status = 'active' | 'inactive' | 'pending';
function setStatus(s: Status) {}
setStatus('active'); // Works, no import needed
Related resources
Related: What is TypeScript