文章內(nèi)容輸出來源:拉勾教育大前端高薪訓練營
文章說明:文章內(nèi)容為學習筆記抛人,學徒之心弛姜,僅為分享; 如若有誤,請在評論區(qū)指出妖枚,如若您覺得文章內(nèi)容對您有一點點幫助廷臼,請點贊、關注绝页、評論荠商,共享
上一篇:第一階段.模塊二:學習筆記-TypeSrcipt的類
下一篇:第一階段.模塊二:學習筆記-TypeSrcipt的類型推論和兼容性
ts 中的枚舉
枚舉可以看成一個字典
注 1:使用關鍵字 【enum】 來定義枚舉
注 2:枚舉變量的首字母最好大寫
注 3:枚舉里面的元素的 key 最好大寫
1-ts 中的數(shù)字枚舉
默認枚舉的索引:
enum Role {
SUPPER_ADMIN,
ADMIN,
USER
}
console.log(Role.SUPPER_ADMIN) // 返回的是索引 0
console.log(Role.ADMIN) // 返回的是索引 1
console.log(Role.USER) // 返回的是索引 2
---------------------
---------------------
自定義枚舉的索引1:
enum Role {
SUPPER_ADMIN = 2,
ADMIN,
USER
}
console.log(Role.SUPPER_ADMIN) // 返回的是索引 2
console.log(Role.ADMIN) // 返回的是索引 3
console.log(Role.USER) // 返回的是索引 4
---------------------
---------------------
自定義枚舉的索引2:
enum Role {
SUPPER_ADMIN,
ADMIN =4,
USER
}
console.log(Role.SUPPER_ADMIN) // 返回的是索引 0
console.log(Role.ADMIN) // 返回的是索引 4
console.log(Role.USER) // 返回的是索引 5
---------------------
---------------------
自定義枚舉的索引3:
const NUMBER = 4 // 使用常量
enum Role {
SUPPER_ADMIN,
ADMIN = NUMBER,
USER = 9
}
console.log(Role.SUPPER_ADMIN) // 返回的是索引 0
console.log(Role.ADMIN) // 返回的是索引 4
console.log(Role.USER) // 返回的是索引 9
---------------------
---------------------
自定義枚舉的索引4:
const func = () => 40 // 使用函數(shù)
enum Role {
SUPPER_ADMIN,
ADMIN = func(),
USER = 9
}
console.log(Role.SUPPER_ADMIN) // 返回的是索引 0
console.log(Role.ADMIN) // 返回的是索引 40
console.log(Role.USER) // 返回的是索引 9
2-ts 中的枚舉的反向映射
// 沒什么要注意的
const func = () => 40 // 使用函數(shù)
enum Role {
SUPPER_ADMIN,
ADMIN = func(),
USER = 9
}
console.log(Role)
/**
{
0: "SUPPER_ADMIN",
9: "USER",
40: "ADMIN",
SUPPER_ADMIN: 0,
ADMIN: 40,
USER: 9
}
*/
3-ts 中的字符串枚舉
enum Role {
Success = '成功',
Fail = '失敗',
Error = Fail
}
console.log(Role.Success) // 成功
console.log(Role.Fail) // 失敗
console.log(Role.Error) // 失敗
4-ts 中的異構枚舉
枚舉里面既有數(shù)字枚舉又有字符串枚舉,不建議這么使用续誉,盡量不用
enum Role {
Success = '成功',
Fail = '失敗',
Error = 00001
}
5-ts 中的枚舉成員類型和聯(lián)合枚舉類型
// 都不帶初始值的枚舉成員 enum Role {A,B,C,D}
// 有初始值莱没,值都為字符串的字面量 enum Role {A = 'a',B = 'b',C = 'c',D = 'd'}
// 有初始值,值都為數(shù)值的字面量 enum Role {A = -1,B = -2,C = 0,D = 1}
上面3條酷鸦,滿足任意一條饰躲,該枚舉本身/枚舉內(nèi)的成員 就可以作為類型來使用
枚舉成員類型:
enum Animals {
Dog = 1,
Cat = 2,
}
interface Dog {
type: Animals.Dog // 用的是枚舉內(nèi)部的屬性的名字來定義類型的
}
const dog:Dog = {
// type: Animals.Cat // 不能將類型“Animals.Cat”分配給類型“Animals.Dog”
type: Animals.Dog
}
聯(lián)合枚舉類型
enum Animals {
Dog = 1,
Cat = 2,
}
interface Dog {
type: Animals // 用的是枚舉的名字來定義類型的
}
const dog:Dog = {
type: Animals.Dog
}
6-ts 中的運行時的枚舉
沒有什么要注意的
7-ts 中的 const enum
正常情況下,定義的枚舉臼隔,代碼編譯后属铁,會生成對應的js對象的代碼
但有的時候,我們定義枚舉 是為了代碼的可讀性躬翁,并沒有其他的用途焦蘑,這時候,就可以使用const了
cosnt enum Animal{
Dog = 1
}
// 上面代碼編譯后沒有任何數(shù)據(jù)顯示
const dog = Animal.dog
// 代碼編譯后顯示的數(shù)據(jù) var dog = 1 /*Dog*/
結語:
來拉鉤教育訓練營學習已經(jīng)有三周了盒发,在沒有來之前例嘱,我都是回家之后打游戲(游戲名:斗戰(zhàn)神),來到這里之后才發(fā)現(xiàn)居然還有很多大佬也在學習宁舰,真的很驚訝拼卵,本人自身水平垃圾的一批,再不學習蛮艰,以后可能一直就是混吃等死的狀態(tài)了
- 首先來說腋腮,拉鉤的課程很干,每個視頻很短壤蚜,都是干貨即寡,講師沒有一句廢話,視頻內(nèi)容覆蓋比較廣袜刷,布置的作業(yè)也比較符合實際聪富,導師也會及時批改,然后一周或兩周必有直播著蟹,直播都會回答學習過程中所遇到的問題和新的內(nèi)容
- 其次來說墩蔓,每個班都有班級群梢莽,群里居然還有5年或6年的前端開發(fā)的大佬(⊙▽⊙); 班主任和導師也在群里奸披,有任何問題都可以在群里@導師昏名,班級群真的很活躍
- 最后來說一句,如果有其他人也是在打游戲混日子阵面,不如來拉鉤教育訓練營葡粒,嘗試著改變一下自己目前所處的環(huán)境