這一篇要來介紹Typescript的實用功能 - 列舉(Enum)
列舉可以轉換一組備有限範圍的資料,比如說日期、郵遞區號、星期等等。
列舉可以讓我們定義有名字意義的常數,讓我們很可以使用名字去對應那些常數,使那些常數的意義可以很輕易對應,也可以更容易維護
定義一個星期轉換的列舉
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
列舉和陣列一樣,數字從0開始
console.log(Days.Sun) // 0
console.log(Days.Fri) // 5
列舉也不一定要從0開始,可以賦予其中一個值,之後的屬性會自動累加1
enum Days { Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun};
定義星期一Mon等於1,之後其他的星期就會自動累加
console.log(Days.Mon) // 1
console.log(Days.Sat) // 6
如果不想讓值從0開始,往後的值也沒有累加的關係,可以自行手動賦值
例如以下是台北市的郵遞區號:
100    中正區
103    大同區
104    中山區
105    松山區
106    大安區
108    萬華區
110    信義區
111    士林區
112    北投區
114    內湖區
115    南港區
116    文山區
假設有一個表單必須填寫郵遞區號,在填寫表單的時候會有兩個問題:
列舉使用 enum 關鍵字來定義
enum TaipeiZip {
    '中正區' = 100,
    '大同區' = 103,
    '中山區' = 104,
    '松山區' = 105,
    '大安區' = 106,
    '萬華區' = 108,
    '信義區' = 110,
    '士林區' = 111,
    '北投區' = 112,
    '內湖區' = 114,
    '南港區' = 115,
    '文山區' = 116
};
定義完列舉的內容之後,就可以來使用列舉,測試一下
輸入地區後會輸出郵遞區號
console.log(TaipeiZip.中山區) // 104
console.log(TaipeiZip.文山區) // 116
當然也可以使用郵遞區號轉換成地區
console.log(TaipeiZip[TaipeiZip.中正區]) // 中正區
console.log(TaipeiZip[TaipeiZip.內湖區]) // 內湖區
今天學到的事情有:
Typescript在此告一段落。明天將進入新的章節 - Nestjs