響應設網(wǎng)站多少錢可以做百度推廣賬號注冊
ts 枚舉類型介紹
TypeScript的枚舉類型是一種特殊的數(shù)據(jù)類型,它允許開發(fā)者為一組相關(guān)值定義一個共同的名稱,使我們可以更清晰、更一致地使用這些值。
枚舉類型在TypeScript中用enum關(guān)鍵字定義,每個枚舉值默認都是數(shù)字類型,從0開始自動遞增。
枚舉類型在TypeScript中用 enum 關(guān)鍵字定義。下面是一個簡單的枚舉例子:
在這個例子中我定義了一個名為 Direction 的枚舉類型,它有四個可能的值:Up,Down,Left 和 Right。我們可以使用這些值來表示一個角色在屏幕上的方向。
tips: 使用枚舉類型的值,可以在函數(shù)、對象和方法等中限制參數(shù)的范圍
enum Direction { Up, Down, Left, Right
}function move(direction: Direction) { //... your code here
}
- 使用enum關(guān)鍵字定義枚舉
- 約定枚舉名稱,枚舉中的值,枚舉中的多個值之間通過,逗號隔開
- 枚舉名稱,以及枚舉中的值應該由大寫字母開頭
- 枚舉可以直接用作類型注解
枚舉的值
在TypeScript中,枚舉(Enum)是一種特殊的數(shù)據(jù)類型,允許為一組相關(guān)的值賦予友好的名稱。枚舉值默認從0開始自動遞增,但也可以為它們分配特定的數(shù)值。使用屬性訪問操作符(.)訪問枚舉的成員
比如上面例子中的Direction 它有四個可能的值:Up、Down、Left和Right。默認情況下,它們的值分別是0、1、2和3。
enum Direction { Up, Down, Left, Right
}
輸出如下
其實這個從編譯器的代碼提示中也能看出來,如下
枚舉自定義賦值
我們還可以為枚舉值分配特定的數(shù)值,如下示例:
enum Direction { Up = 1, Down, Left, Right
}
當我們?yōu)闉閁p分配了數(shù)值1,其它枚舉值將按順序遞增。因此,Down的值為2,Left的值為3,Right的值為4。
示例如下
注意:枚舉值默認從0開始自動遞增,每次加1,也就是說,默認情況下不能為枚舉值賦值100,然后讓后面的依次加100
字符串枚舉
ts也支持字符串枚舉,字符串枚舉允許為相關(guān)的字符串值賦予友好的名稱,使代碼更加清晰和易于理解。在 TypeScript 中定義字符串枚舉的語法與數(shù)字枚舉類似,只是將枚舉值設置為字符串類型。
示例如下
enum Direction {Up = '向上',Down = '向下',Left = '向左',Right = '向右'
}
需要注意的是,因為字符串枚舉沒有自增長行為,所以字符串枚舉的每個成員必須要有初始值
需要注意的是
-
ts枚舉沒有異構(gòu)類型(Heterogeneous):在某些情況下,你可能希望在一個枚舉中混合使用不同的類型。然而,TypeScript不允許異構(gòu)類型的枚舉。這意味著所有枚舉值必須屬于同一種類型(數(shù)字或字符串)。
-
在TypeScript中,枚舉值的類型在聲明時確定,并且不能更改。這意味著你不能在一個枚舉中混合使用數(shù)字和字符串類型的值。
ts枚舉原理
枚舉是typescript為數(shù)不多的非JavaScript類型級擴展(不僅僅是類型)的特性之一
因為:其它類型僅僅是被當作類型,而枚舉不僅用作類型,還提供值(由上面的那些例子我們可以清楚的知道枚舉成員都是有值的)
也就是說,其它類型會在編譯為js代碼時自動移除,但是枚舉類型不行,因為它有值,且可能會被使用,于是枚舉類型會被編譯成js代碼
如下
我們運行tsc命令將ts代碼編譯成js代碼,將得到如下js代碼
(不要介意,這是我的鍋,漢字被編譯成unicode碼了,不會有什么影響的,就是人不太好看懂)