轉載node
項目實踐倉庫git
https://github.com/durban89/typescript_demo.git tag: 1.3.5
爲了保證後面的學習演示須要安裝下ts-node,這樣後面的每一個操做都能直接運行看到輸出的結果。github
npm install -D ts-node
後面本身在練習的時候能夠這樣使用typescript
npx ts-node 腳本路徑
使用枚舉咱們能夠定義一些帶名字的常量。 使用枚舉能夠清晰地表達意圖或建立一組有區別的用例。 TypeScript支持數字的和基於字符串的枚舉。npm
首先咱們看看數字枚舉,若是你使用過其它編程語言應該會很熟悉。編程
enum Derection { Up = 1, Down, Left, Right }
如上,咱們定義了一個數字枚舉, Up使用初始化爲 1。 其他的成員會從 1開始自動增加。 換句話說, Direction.Up的值爲 1, Down爲 2, Left爲 3, Right爲 4。編程語言
咱們還能夠徹底不使用初始化器,以下學習
enum Derection { Up, Down, Left, Right }
如今, Up的值爲 0, Down的值爲 1等等。 當咱們不在意成員的值的時候,這種自增加的行爲是頗有用處的,可是要注意每一個枚舉成員的值都是不一樣的。
使用枚舉很簡單:經過枚舉的屬性來訪問枚舉成員,和枚舉的名字來訪問枚舉類型,以下示例spa
enum ResponseOther { No = 0, Yes = 1, } function respond(re: string, me: ResponseOther) { // other doing } respond("message", ResponseOther.No)
數字枚舉能夠被混入到 計算過的和常量成員(以下所示)。 簡短地說,不帶初始化器的枚舉或者被放在第一的位置,或者被放在使用了數字常量或其它常量初始化了的枚舉後面。 換句話說,下面的狀況是不被容許的:調試
enum E { A = getSomeValue(), B, // error! 'A' is not constant-initialized, so 'B' needs an initializer }
字符串枚舉的概念很簡單,可是有細微的 運行時的差異。 在一個字符串枚舉裏,每一個成員都必須用字符串字面量,或另一個字符串枚舉成員進行初始化。
enum Direction { Up = "UP", Down = "DOWN", Left = "LEFT", Right = "RIGHT", }
因爲字符串枚舉沒有自增加的行爲,字符串枚舉能夠很好的序列化。 換句話說,若是你正在調試而且必需要讀一個數字枚舉的運行時的值,這個值一般是很難讀的 - 它並不能表達有用的信息(儘管 反向映射會有所幫助),字符串枚舉容許你提供一個運行時有意義的而且可讀的值,獨立於枚舉成員的名字。
本實例結束實踐項目地址
https://github.com/durban89/typescript_demo.git tag: 1.3.6