TypeScript-7.enum枚举

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值