题外话:今天是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 */;