使用枚举我们可以定义一些带名字的常量。 使用枚举可以清晰地表达意图或创建一组有区别的用例。 TypeScript支持数字的和基于字符串的枚举。
// 数字枚举
enum Status {
Uploading,
Success,
Failed
}
console.log(Status)
/**
* 0: "Uploading"
1: "Success"
2: "Failed"
Failed: 2
Success: 1
Uploading: 0 可以反向映射
* */
console.log(Status.Uploading) // 0 // 默认 0 1 2
console.log(Status['Uploading']) // 0
console.log(Status[0]) // Uploading
enum Status2 {
Uploading,
Success = 2,
Failed
}
console.log(Status2.Failed) // 3 // 0 2 3
// 字符串枚举
enum Message {
Error = 'Sorry',
Success = 'Ok',
Failed = Error
}
console.log(Message.Failed) // Sorry
// 异构枚举
enum Result{
Failed = 0,
Success = 'success'
}
// 枚举成员类型 和 联合枚举类型
enum Animals {
Dog = 1,
Cat = 2,
}
interface Dog {
type:Animals.Dog
}
enum Status3 {
Off,
On,
}
interface Light {
status:Status3
}
// const light:Light = {
// status:Animals.Dog
// }
const enum Animal { // 不会编译成对象了
Dog = 1,
}
const dog = Animal.Dog // 1 编译直接获取值