---
# System prepended metadata

title: TypeScript 常用型別 - 列舉型別（Enum）
tags: [TypeScript]

---

# TypeScript 常用型別 - 列舉型別（Enum）
適用於 一定範圍內的值，或者幾種固定值
如:
1. 狀態
2. 日期之類

車輛狀態: 停車、行駛、加速、煞車
訂單狀態: 已下單、運送中、已送達
星期: 一、二、三、四、五、六、日


### 使用方法
```
// 定義任務狀態列舉
enum Role {
    Admin,
    Author,
    ReadOnlyUser
}
```
```
//　將其引用帶入，儲存後，JavaScript 會自動編撰列舉的函式
let user ={
    name:"Alice",
    role:Role.Admin
}
// 這邊列舉的值會自動轉換為 0 1 2 3 數字
console.log(user)
```

範例：
```
// 定義任務狀態列舉
enum TaskStatus {
    Todo,
    InProgress,
    Done
}
// 空任務陣列，定義 陣列型別 內為 物件
// 該狀態放列舉為其中一個才行
let tasks:{name:string,status:TaskStatus}[] = [];

// 新增陣列
// 函式傳入須為 String
function createTask(name: string){
    // 推入物件
    tasks.push({
        name: name,
        status: TaskStatus.Todo // 新增任務 因此預設為 Todo
    })
}

// 新增任務到任務列表
createTask("學習TS");
createTask("去超市購物");

//顯示任務

console.log(tasks);

```