TypeScript基礎入門 - 枚舉 - 數字枚舉和...

TypeScript基礎入門 - 枚舉 - 數字枚舉和...

1 人贊了文章

轉載

TypeScript基礎入門 - 枚舉 - 數字枚舉和字元串枚舉 - 博文 - Gowhich?

www.gowhich.com圖標

項目實踐倉庫

https://github.com/durban89/typescript_demo.gittag: 1.3.5

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

npm install -D ts-node

後面自己在練習的時候可以這樣使用

npx ts-node 腳本路徑

枚舉

枚舉

使用枚舉我們可以定義一些帶名字的常量。 使用枚舉可以清晰地表達意圖或創建一組有區別的用例。 TypeScript支持數字的和基於字元串的枚舉。

數字枚舉

首先我們看看數字枚舉,如果你使用過其它編程語言應該會很熟悉。

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等等。 當我們不在乎成員的值的時候,這種自增長的行為是很有用處的,但是要注意每個枚舉成員的值都是不同的。

使用枚舉很簡單:通過枚舉的屬性來訪問枚舉成員,和枚舉的名字來訪問枚舉類型,如下示例

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.gittag: 1.3.6

推薦閱讀:

人工智慧是人性的羅夏測試
android中的manifest是用來幹嘛的?
剪斷枷鎖——延遲綁定
Python基礎:字元串格式化--完整版

TAG:TypeScript | 計算機科學 | 科技 |