Enums 是 Enumerations 的縮寫,是預設的常量,可以由開發人員定義以在代碼的其他地方使用。
對于 JAVAScript 開發人員來說,枚舉的概念通常是新的,但它們相對容易理解。 Enums 為我們正在編寫的內容添加上下文。
如何定義 Enums
Enums 可以在 TypeScript 中使用 enum 關鍵字定義。 這是一個例子:
enum Pet {
Dog,
Cat,
Goldfish,
Skeleton
}
默認情況下,這些中的每一個都將被分配一個值。 所以 Dog 將為 0,Cat 為 1,依此類推。 假設我們有一個生成寵物的函數。 之前,我們可能會這樣寫:
// Generate a Cat
generatePet(1);
現在,我們可以為我們正在做的事情添加上下文,并使用我們的 enum 列表來做到這一點:
// Generate a Cat
generatePet(Pet.Cat);
上面的代碼和我們之前做的一樣,只是我們使用了我們的 Enums。
所以等等……為什么要使用 Enums?
你可能想知道,“有什么意義?” 這是一個有效的問題。 Enums 本質上允許我們為我們正在做的事情提供更多的上下文。 我們可以讓用戶使用 Enum 列表,而不是讓用戶記住可能的寵物編號列表。 這也讓下一個閱讀我們代碼的人更好地了解我們正在嘗試做什么。
數字和字符串 Enums
我們可以將 Enums 定義為數字或字符串。 讓我們稍微詳細地看一下這些。
enum Pet {
Dog = 2,
Cat,
Goldfish,
Skeleton
}
上面,我們給 Dog 一個數值 2。之后的每一項都會增加 1,所以 Cat 變為 3,Goldfish 變為 4,等等,但您也可以隨意定義它們:
enum Pet {
Dog = 2,
Cat = 9,
Goldfish = 15,
Skeleton = 44
}
通常我們不會混合字符串和數字以避免混淆,但我們也可以將 Enums 定義為完全字符串:
enum Counting {
One = "one",
Two = "two",
Three = "three"
}
Enum 來自函數的值
Enums 也可以是返回值的函數。 如果您只在 enum 中定義一個值,則函數必須放在最后。 如果你把函數放在開頭,那么所有的 enums 都需要值。 因此,以下會引發錯誤:
// This will throw an error, since the function is at the start
// So typescript assumes all will be functions
enum Counting {
One = getOne(),
Two,
Three,
}
但這不會:
enum Counting {
One,
Two,
Three = getThree(),
}
上面 One 返回 0, Two 返回 1, Three 返回 getThree() 的值。 舉個例子,我們的 getThree() 函數可能看起來像這樣(返回值 3):
const getThree = function() {
return 3;
}
計算的 Enums
Enums 可以被計算,(即一個計算),或者也可以引用其他 Enums。 例如:
enum FirstEnum {
One, // Returns "0"
Two, // Returns "1"
Three // Returns "2"
}enum AnotherEnum {
One: FirstEnum.One, // returns FirstEnum.One, i.e. "0"
Two: 1 + 1, // Calculates and returns "2"
Three: 1 * 3, // Calculates and returns "3"
Star: One // Refers to AnotherEnum.One, returns "0"
}
結論
Enums 是 TypeScript 中為代碼添加更多語義的強大方法。 它們讓閱讀你代碼的人知道你想要完成什么,從而提高你所寫內容的可維護性。 它們還允許您在代碼庫中引用標準常量,從而使您的生活更輕松。
關注七爪網,獲取更多App/小程序/網站源碼資源!