const enum
- TypeScript course
- Beginner
- Lesson 22/89
- 4 min
Learn compile-time optimization with const enum.
const enum
A const enum inlines member values at their use sites at compile time. The compiled JavaScript has no enum object; a usage like Hiz.Yavas becomes the literal 0 directly.
const enum Hiz { Yavas, Hizli }
let v = Hiz.Yavas; // compiles to: let v = 0;A const enum provides named constants with no runtime overhead.
When to use a const enum
A const enum fits when you want zero runtime cost. The compiled code is smaller because values are inlined instead of an enum object. However, you cannot iterate over the enum or read its member list at runtime.
const enum Boyut { Kucuk, Buyuk }
console.log(Boyut.Kucuk); // 0A const enum is chosen when you work with constant values and need no enum object.
Practice Define the level constant
Define a const named Seviye mapping Dusuk, Orta, Yuksek to 0, 1, 2 in order (mimicking const enum constant values). Print the value of Seviye.Orta with console.log.
Starter code
// Seviye adında bir const tanımla
// Dusuk, Orta, Yuksek üyelerini 0, 1, 2 ile eşle
// Seviye.Orta değerini yazdırSample solution
const Seviye = { Dusuk: 0, Orta: 1, Yuksek: 2 };
console.log(Seviye.Orta);Expected output
1
Questions and answers
Review the lesson questions together with their answers. To test yourself, solve the lesson interactively.
1 What does <code>const enum</code> do differently at compile time?
- It creates a larger runtime object
- It allows string values only
- It inlines member values at use sites Correct answer
- It prevents enum member access
Explanation: A const enum inlines member values directly at their use sites; the compiled code has no enum object left, only constant values.
2 const enum keyword
____ enum Boyut { Kucuk, Orta, Buyuk }
const enum Boyut { Kucuk, Orta, Buyuk }
Explanation: <code>const enum</code> is used together; <code>let</code>, <code>readonly</code> and <code>static</code> are invalid prefixes for enum.
3 const enum concepts
| Term | Meaning |
|---|---|
const enum |
Inlines members at compile time |
Hiz.Yavas (const enum) |
Becomes the 0 literal in compiled code |
const enum nesnesi |
Does not exist at runtime |
Inlining |
Embedding the member value at the use site |