const列舉 ts TS 3 1 列舉

2021-10-13 14:42:11 字數 1167 閱讀 3661

列舉

數字列舉

enum direction

它不帶有初始化器且它之前的列舉成員是乙個 _數字_常量。 這種情況下,當前列舉成員的值為它上乙個列舉成員的值加 1。

// all enum members in 'e1' and 'e2' are constant.

enum e1

enum e2 ) ) {}

f(e)

function f1(x: ){}

f1(e) // error

引用列舉成員總會生成為對屬性訪問並且永遠也不會內聯**。

注釋:當引用乙個列舉的成員項時,實際是建立了乙個列舉物件,然後引用這個物件的屬性

要注意的是 _不會_為字串列舉成員生成反向對映。

const列舉

大多數情況下,列舉是十分有效的方案。 然而在某些情況下需求很嚴格。 為了避免在額外生成的**上的開銷和額外的非直接的對列舉成員的訪問,我們可以使用 const列舉。 常量列舉通過在列舉上使用 const修飾符來定義。

const enum enum {

a = 1,

b = a * 2

常量列舉只能使用常量列舉表示式,並且不同於常規的列舉,它們在編譯階段會被刪除。 常量列舉成員在使用的地方會被內聯進來。 之所以可以這麼做是因為,常量列舉不允許包含計算成員。

const enum directions {

up,down,

left,

right

let directions = [directions.up, directions.down, directions.left, directions.right]

生成後的**為:

var directions = [0 /* up */, 1 /* down */, 2 /* left */, 3 /* right */];

外部列舉

外部列舉用來描述已經存在的列舉型別的形狀。

declare enum enum {

a = 1,

b,c = 2

外部列舉和非外部列舉之間有乙個重要的區別,在正常的列舉裡,沒有初始化方法的成員被當成常數成員。 對於非常數的外部列舉而言,沒有初始化方法時被當做需要經過計算的。

注釋:外部列舉僅僅用於編譯時的檢查,在編譯結果中會被刪除,是為了便於給第三方庫定義列舉物件的型別

7 2列舉排列

7.2.1生成1 n 的排列 問題描述 輸入整數n,按照字典序從小到大列印出1 n的去所有排列。兩個序列的字典序大小關係等價於從頭開始第乙個不相同處的大小關係,例如 1,2,3 3,2,1 n 3時,輸出結果是 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 演算法思想 設集...

9 4 列舉型別

乙個變數只有幾種可能的取值,可以一一枚舉出來,變數的取值僅限於列舉的值的有限範圍內,而不適宜用整型 實型 字元型直接表示,c語言提供了這種列舉資料型別。例如,一年的四季有春夏秋冬 乙個星期有星期日 星期一到星期六等。定義列舉型別的一般形式為 enum 列舉型別名 如 enum weekday 1.列...

146 列舉型別

除了簡單的變數型別之外,c 還提供了3個複雜的變數 列舉,結構和陣列。列舉型別的定義 enum 列舉型別的宣告 列舉型別的賦值 在遊戲中我們可以定義乙個int型別來儲存狀態 0 遊戲暫停 1遊戲失敗 2遊戲勝利 3開始選單,但是這樣不容易閱讀,而且容易出錯。這個時候我們通過列舉型別來解決 enum ...