TypeScript基礎入門 - 枚舉 - 異構枚舉和枚舉成員

轉載node

TypeScript基礎入門 - 枚舉 - 異構枚舉和枚舉成員

項目實踐倉庫git

https://github.com/durban89/typescript_demo.git
tag: 1.3.6

爲了保證後面的學習演示須要安裝下ts-node,這樣後面的每一個操做都能直接運行看到輸出的結果。github

npm install -D ts-node

後面本身在練習的時候能夠這樣使用typescript

npx ts-node 腳本路徑

枚舉

枚舉

使用枚舉咱們能夠定義一些帶名字的常量。 使用枚舉能夠清晰地表達意圖或建立一組有區別的用例。 TypeScript支持數字的和基於字符串的枚舉。npm

異構枚舉(Heterogeneous enums)

從技術的角度來講,枚舉能夠混合字符串和數字成員,可是彷佛你並不會這麼作:學習

enum BooleanLikeHeterogeneousEnum {
    No = 0,
    Yes = "YES",
}


除非你真的想要利用JavaScript運行時的行爲,不然咱們不建議這樣作。spa

計算的和常量成員

每一個枚舉成員都帶有一個值,它能夠是 常量或 計算出來的。 當知足以下條件時,枚舉成員被看成是常量:code

它是枚舉的第一個成員且沒有初始化器,這種狀況下它被賦予值 0:對象

// E.X is constant:
enum E { X }

它不帶有初始化器且它以前的枚舉成員是一個 數字常量。 這種狀況下,當前枚舉成員的值爲它上一個枚舉成員的值加1。blog

enum E1 { X, Y, Z }

enum E2 {
    A = 1, B, C
}

枚舉成員使用 常量枚舉表達式初始化。 常數枚舉表達式是TypeScript表達式的子集,它能夠在編譯階段求值。 當一個表達式知足下面條件之一時,它就是一個常量枚舉表達式:

 

  • 一個枚舉表達式字面量(主要是字符串字面量或數字字面量)
  • 一個對以前定義的常量枚舉成員的引用(能夠是在不一樣的枚舉類型中定義的)
  • 帶括號的常量枚舉表達式
  • 一元運算符 +, -, ~其中之一應用在了常量枚舉表達式
  • 常量枚舉表達式作爲二元運算符 +, -, *, /, %, <<, >>, >>>, &, |, ^的操做對象。 若常數枚舉表達式求值後爲 NaN或 Infinity,則會在編譯階段報錯。

全部其它狀況的枚舉成員被看成是須要計算得出的值。

enum FileAccess {
    // 常量
    None,
    Read= 1 << 1,
    Write = 1 << 2,
    ReadWrite = Read | Write,
    // 計算出來的
    G = "123".length,
}


本實例結束實踐項目地址

https://github.com/durban89/typescript_demo.git
tag: 1.3.7
相關文章
相關標籤/搜索