TypeScript基礎入門 - 枚舉 - 數字枚舉和字符串枚舉

轉載node

TypeScript基礎入門 - 枚舉 - 數字枚舉和字符串枚舉

項目實踐倉庫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
相關文章
相關標籤/搜索