Jika Anda memiliki background programming, konsep enum pada typescript sama dengan bahasa programming lainnya seperti Java atau C#.
Enums berguna untuk mendefinisikan constant dalam format yang mudah dipahami. TypeScript menyediakan numeric dan string enums.
Untuk lebih jelasnya, mari lihat kode berikut:
interface Todo{
name: string;
state: number;
}
var todo : Todo = {
name: "Beli Indomie",
state: 0
}
function deleteTodo (todo: Todo){
if (todo.state != 2){
throw "Can't delete incomplete task"
}
}
Misalnya kita memiliki interface Todo, dengan property state. Dimana property state dapat bernilai:
- 0: New
- 1: Active
- 2: Complete
- 3: Deleted
Saat Anda membuat program, mungkin Anda ingat nilai tersebut. Namun suatu saat, ketika kembali melihat program diatas, Anda kemungkinan besar lupa akan maksud dari nilai tersebut.
Masalah diatas dapat diselesaikan dengan enum. Berikut cara mendeklarasikan enum :
enum TodoState{
}
Mari kita modifikasi kode diatas dengan menambahkan enum.
enum TodoState{
New = 0,
Active,
Complete,
Deleted
}
interface Todo{
name: string;
state: TodoState;
}
var todo : Todo = {
name: "Budi",
state: TodoState.New
}
function deleteTodo (todo: Todo){
if (todo.state != TodoState.Complete){
throw "Can't delete incomplete task"
}
}
Dapat dilihat, program diatas lebih mudah dipahami. Suatu saat, jika Anda perlu melakukan perbaikan atau upgrade, Anda akan paham maksud kode diatas.
Perhatikan, urutan deklarasi penting. JIka Anda mendeklarasikan enum dibawah object yang menggunakannya akan error.
#error, enum belum dideklarasikan, tapi sudah digunakan pada var todo.
interface Todo{
name: string;
state: TodoState;
}
var todo : Todo = {
name: "Budi",
state: TodoState.New
}
enum TodoState{
New = 0,
Active,
Complete,
Deleted
}