Enums 是 Enumerations 的縮寫,是預(yù)設(shè)的常量,可以由開發(fā)人員定義以在代碼的其他地方使用。
對(duì)于 JAVAScript 開發(fā)人員來說,枚舉的概念通常是新的,但它們相對(duì)容易理解。 Enums 為我們正在編寫的內(nèi)容添加上下文。
如何定義 Enums
Enums 可以在 TypeScript 中使用 enum 關(guān)鍵字定義。 這是一個(gè)例子:
enum Pet {
Dog,
Cat,
Goldfish,
Skeleton
}
默認(rèn)情況下,這些中的每一個(gè)都將被分配一個(gè)值。 所以 Dog 將為 0,Cat 為 1,依此類推。 假設(shè)我們有一個(gè)生成寵物的函數(shù)。 之前,我們可能會(huì)這樣寫:
// Generate a Cat
generatePet(1);
現(xiàn)在,我們可以為我們正在做的事情添加上下文,并使用我們的 enum 列表來做到這一點(diǎn):
// Generate a Cat
generatePet(Pet.Cat);
上面的代碼和我們之前做的一樣,只是我們使用了我們的 Enums。
所以等等……為什么要使用 Enums?
你可能想知道,“有什么意義?” 這是一個(gè)有效的問題。 Enums 本質(zhì)上允許我們?yōu)槲覀冋谧龅氖虑樘峁└嗟纳舷挛摹?我們可以讓用戶使用 Enum 列表,而不是讓用戶記住可能的寵物編號(hào)列表。 這也讓下一個(gè)閱讀我們代碼的人更好地了解我們正在嘗試做什么。
數(shù)字和字符串 Enums
我們可以將 Enums 定義為數(shù)字或字符串。 讓我們稍微詳細(xì)地看一下這些。
enum Pet {
Dog = 2,
Cat,
Goldfish,
Skeleton
}
上面,我們給 Dog 一個(gè)數(shù)值 2。之后的每一項(xiàng)都會(huì)增加 1,所以 Cat 變?yōu)?3,Goldfish 變?yōu)?4,等等,但您也可以隨意定義它們:
enum Pet {
Dog = 2,
Cat = 9,
Goldfish = 15,
Skeleton = 44
}
通常我們不會(huì)混合字符串和數(shù)字以避免混淆,但我們也可以將 Enums 定義為完全字符串:
enum Counting {
One = "one",
Two = "two",
Three = "three"
}
Enum 來自函數(shù)的值
Enums 也可以是返回值的函數(shù)。 如果您只在 enum 中定義一個(gè)值,則函數(shù)必須放在最后。 如果你把函數(shù)放在開頭,那么所有的 enums 都需要值。 因此,以下會(huì)引發(fā)錯(cuò)誤:
// 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,
}
但這不會(huì):
enum Counting {
One,
Two,
Three = getThree(),
}
上面 One 返回 0, Two 返回 1, Three 返回 getThree() 的值。 舉個(gè)例子,我們的 getThree() 函數(shù)可能看起來像這樣(返回值 3):
const getThree = function() {
return 3;
}
計(jì)算的 Enums
Enums 可以被計(jì)算,(即一個(gè)計(jì)算),或者也可以引用其他 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"
}
結(jié)論
Enums 是 TypeScript 中為代碼添加更多語義的強(qiáng)大方法。 它們讓閱讀你代碼的人知道你想要完成什么,從而提高你所寫內(nèi)容的可維護(hù)性。 它們還允許您在代碼庫中引用標(biāo)準(zhǔn)常量,從而使您的生活更輕松。
關(guān)注七爪網(wǎng),獲取更多App/小程序/網(wǎng)站源碼資源!