題外話:今天是2020.06.21 夏至+父親節+日全食。梅老闆說 今天也是新月,在這天萬物都煥然一新,加上日食和夏至,非常少見。這一天適合全新的價值觀,許下一個心願,一定要是積極的願望。我許的是 愛自己 做自己。配上一首詩。
Had I not seen the Sun
I could have borne the shade
But Light a newer Wilderness
My Wilderness has made ------- Emily Dickinson
筆記。
// 數字枚舉
enum Status {
Uploading,
Success = 3,
// 如果這裏綁定一個const量或者return值的方法
// 自動編碼會失效,下面的枚舉必須初始化一個值
Failed,
}
// 兩種取值方式
console.log(Status.Uploading) // 0
// tslint:disable-next-line: no-string-literal
console.log(Status['Uploading']) // 0
console.log(Status) // 反向映射
{
0: "Uploading"
3: "Success"
4: "Failed"
Failed: 4
Success: 3
Uploading: 0
}
// 字符串枚舉
enum Message {
Error = 'Sorry, error',
Success = 'Hoho, success',
Failed = Error
}
console.log(Message.Success)
console.log(Message.Failed)
// 異構枚舉 少用
enum Result {
Failed = 0,
Success = 'success'
}
// 枚舉成員類型和聯合枚舉類型
// 1. 不帶初始值的枚舉成員
enum E { A, B, C }
// 2. 值爲字符串自變量
enum F { A = 'a' }
// 3. 值爲數值(正負都可以)自變量
enum G { D = -1 }
// 所有成員爲以上三種情況,就可作爲類型
enum Animals {
Dog = 1,
Cat = 2
}
interface Dog {
type: Animals.Dog
}
const dog: Dog = {
type: Animals.Dog
}
enum Statuss {
Off,
On
}
interface Light {
status: Statuss
}
const light: Light = {
status: Statuss.On // 取值只能是 Statuss.On 或者 Statuss.Off
}
// const enum
const enum A {}
// 編譯完之後直接賦值,不會再編譯爲一個對象
// 可以在 https://www.tslang.cn/play/index.html 裏面對比
enum Animals {
Dogs = 1
}
const dog1 = Animals.Dogs
// 編譯爲Js之後
var Animals;
(function (Animals) {
Animals[Animals["Dog"] = 1] = "Dog";
})(Animals || (Animals = {}));
var dog = Animals.Dog;
// 加了const
const enum Animals2 {
Dogs2 = 1
}
// 編譯爲Js之後
var dog = 1 /* Dog */;